From 2aa6c99c90740770678d0aa88a8a8b14052bd48a Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 28 May 2022 13:27:29 +0100 Subject: [PATCH] fix: skip dex files with parsing errors (#1495) --- .../java/jadx/core/dex/nodes/RootNode.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java index 3f3af548d..ed6eade51 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java @@ -115,21 +115,25 @@ public class RootNode { } private void addDummyClass(IClassData classData, Exception exc) { - String typeStr = classData.getType(); - String name = null; try { - ClassInfo clsInfo = ClassInfo.fromName(this, typeStr); - if (clsInfo != null) { - name = clsInfo.getShortName(); + String typeStr = classData.getType(); + String name = null; + try { + ClassInfo clsInfo = ClassInfo.fromName(this, typeStr); + if (clsInfo != null) { + name = clsInfo.getShortName(); + } + } catch (Exception e) { + LOG.error("Failed to get name for class with type {}", typeStr, e); } - } catch (Exception e) { - LOG.error("Failed to get name for class with type {}", typeStr, e); + if (name == null || name.isEmpty()) { + name = "CLASS_" + typeStr; + } + ClassNode clsNode = ClassNode.addSyntheticClass(this, name, classData.getAccessFlags()); + ErrorsCounter.error(clsNode, "Load error", exc); + } catch (Exception innerExc) { + LOG.error("Failed to load class from file: {}", classData.getInputFileName(), exc); } - if (name == null || name.isEmpty()) { - name = "CLASS_" + typeStr; - } - ClassNode clsNode = ClassNode.addSyntheticClass(this, name, classData.getAccessFlags()); - ErrorsCounter.error(clsNode, "Load error", exc); } private static void markDuplicatedClasses(List classes) {