diff --git a/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java b/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java index 9320b6608..f73f11882 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java +++ b/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java @@ -5,6 +5,8 @@ import java.util.HashSet; import java.util.Set; import java.util.regex.Pattern; +import static jadx.core.utils.StringUtils.notEmpty; + public class NameMapper { private static final Pattern VALID_JAVA_IDENTIFIER = Pattern.compile( @@ -76,11 +78,15 @@ public class NameMapper { } public static boolean isValidIdentifier(String str) { - return VALID_JAVA_IDENTIFIER.matcher(str).matches() && isAllCharsPrintable(str); + return notEmpty(str) + && VALID_JAVA_IDENTIFIER.matcher(str).matches() + && isAllCharsPrintable(str); } public static boolean isValidFullIdentifier(String str) { - return VALID_JAVA_FULL_IDENTIFIER.matcher(str).matches() && isAllCharsPrintable(str); + return notEmpty(str) + && VALID_JAVA_FULL_IDENTIFIER.matcher(str).matches() + && isAllCharsPrintable(str); } public static boolean isPrintableChar(int c) { diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java index c9fdbfea9..932e96e77 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java @@ -4,6 +4,7 @@ import java.util.List; import com.android.dex.Dex.Section; +import jadx.core.deobf.NameMapper; import jadx.core.dex.attributes.nodes.SourceFileAttr; import jadx.core.dex.instructions.args.InsnArg; import jadx.core.dex.instructions.args.RegisterArg; @@ -280,7 +281,14 @@ public class DebugInfoParser { } if (mergeRequired) { - reg.mergeDebugInfo(var.getType(), var.getName()); + applyDebugInfo(reg, var); + } + } + + private static void applyDebugInfo(RegisterArg reg, LocalVar var) { + String varName = var.getName(); + if (NameMapper.isValidIdentifier(varName)) { + reg.mergeDebugInfo(var.getType(), varName); } } } diff --git a/jadx-core/src/main/java/jadx/core/utils/StringUtils.java b/jadx-core/src/main/java/jadx/core/utils/StringUtils.java index b707a4f41..ecebdcbda 100644 --- a/jadx-core/src/main/java/jadx/core/utils/StringUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/StringUtils.java @@ -198,4 +198,8 @@ public class StringUtils { sb.append(c); } } + + public static boolean notEmpty(String str) { + return str != null && !str.isEmpty(); + } }