From 395cae439eea75eeb55ef81d4491e3824c76a9f2 Mon Sep 17 00:00:00 2001 From: Ahmed Ashour Date: Fri, 12 Apr 2019 17:12:38 +0200 Subject: [PATCH] fix: handle NPE for methods with removed instructions (#342) (PR #583) --- .../main/java/jadx/core/dex/visitors/ExtractFieldInit.java | 5 +++-- .../src/main/java/jadx/core/dex/visitors/ReSugarCode.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java index d4ea7960b..bf4f71100 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ExtractFieldInit.java @@ -51,7 +51,8 @@ public class ExtractFieldInit extends AbstractVisitor { MethodNode clinit = cls.getClassInitMth(); if (clinit == null || !clinit.getAccessFlags().isStatic() - || clinit.isNoCode()) { + || clinit.isNoCode() + || clinit.getBasicBlocks() == null) { return; } @@ -235,7 +236,7 @@ public class ExtractFieldInit extends AbstractVisitor { } private static List getFieldAssigns(MethodNode mth, FieldNode field, InsnType putInsn) { - if (mth.isNoCode()) { + if (mth.isNoCode() || mth.getBasicBlocks() == null) { return Collections.emptyList(); } List assignInsns = new ArrayList<>(); diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java index 6017bce84..e080556d9 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java @@ -218,7 +218,7 @@ public class ReSugarCode extends AbstractVisitor { private static void initClsEnumMap(ClassNode enumCls) { MethodNode clsInitMth = enumCls.getClassInitMth(); - if (clsInitMth == null || clsInitMth.isNoCode()) { + if (clsInitMth == null || clsInitMth.isNoCode() || clsInitMth.getBasicBlocks() == null) { return; } EnumMapAttr mapAttr = new EnumMapAttr();