diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java index 0a5c3a7ae..e2d075006 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java @@ -5,12 +5,15 @@ import jadx.core.dex.attributes.IAttribute; import jadx.core.utils.Utils; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; public class AnnotationsList implements IAttribute { + public static final AnnotationsList EMPTY = new AnnotationsList(Collections.emptyList()); + private final Map map; public AnnotationsList(List anList) { diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java index 27dbaedc6..d13fbaa1f 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java @@ -71,8 +71,14 @@ public class AnnotationsParser { } private AnnotationsList readAnnotationSet(int offset) throws DecodeException { + if (offset == 0) { + return AnnotationsList.EMPTY; + } Section section = dex.openSection(offset); int size = section.readInt(); + if (size == 0) { + return AnnotationsList.EMPTY; + } List list = new ArrayList(size); for (int i = 0; i < size; i++) { Section anSection = dex.openSection(section.readInt()); @@ -86,7 +92,8 @@ public class AnnotationsParser { EncValueParser parser = new EncValueParser(dex, s); Visibility visibility = null; if (readVisibility) { - visibility = VISIBILITIES[s.readByte()]; + byte v = s.readByte(); + visibility = VISIBILITIES[v]; } int typeIndex = s.readUleb128(); int size = s.readUleb128();