Dear Maintainers, I am attaching the updated snakeyaml2.patch as it seems that the Salsa repository [1] is no longer updated, and the previous upload was done as a NMU. The update patch includes setting a TagInspector that allows instantiating classes from the top-level tags.
Best Regards, Vladimir. [1] https://salsa.debian.org/android-tools-team/apktool
Description: constructing Constructor and Representer derivatives with default LoaderOptions and DumperOptions to comply with the interface of snakeyaml 2.x Author: Pierre Gruet <[email protected]> Forwarded: no Last-Update: 2025-10-12 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/meta/ClassSafeConstructor.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/meta/ClassSafeConstructor.java @@ -16,6 +16,7 @@ */ package brut.androlib.meta; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.error.YAMLException; @@ -29,12 +30,16 @@ protected final List<Class<?>> allowableClasses = new ArrayList<>(); public ClassSafeConstructor() { + super(new LoaderOptions()); this.yamlConstructors.put(Tag.STR, new ConstructStringEx()); this.allowableClasses.add(MetaInfo.class); this.allowableClasses.add(PackageInfo.class); this.allowableClasses.add(UsesFramework.class); this.allowableClasses.add(VersionInfo.class); + loadingConfig.setTagInspector( tag -> + this.allowableClasses.stream().map( x -> x.getName() ) + .anyMatch( x -> x.equals(tag.getClassName()))); } protected Object newInstance(Node node) { --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/meta/EscapedStringRepresenter.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/meta/EscapedStringRepresenter.java @@ -16,11 +16,13 @@ */ package brut.androlib.meta; +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.representer.Representer; public class EscapedStringRepresenter extends Representer { public EscapedStringRepresenter() { + super(new DumperOptions()); RepresentStringEx representStringEx = new RepresentStringEx(); multiRepresenters.put(String.class, representStringEx); representers.put(String.class, representStringEx);

