From 6f9619126ada02aaf10918a8b4c020d47902b998 Mon Sep 17 00:00:00 2001 From: bagipro <15173437+bagipro@users.noreply.github.com> Date: Sat, 21 Nov 2020 23:02:47 +0300 Subject: [PATCH] fix(res): rename invalid res keys (PR #1027) * Renames invalid res keys * perf: store compiled resource name pattern for better performance Co-authored-by: bagipro Co-authored-by: Skylot --- jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java index b3e2190d9..e1695e228 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java @@ -7,6 +7,7 @@ import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; +import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,6 +27,8 @@ import jadx.core.xmlgen.entry.ValuesParser; public class ResTableParser extends CommonBinaryParser { private static final Logger LOG = LoggerFactory.getLogger(ResTableParser.class); + private static final Pattern VALID_RES_KEY_PATTERN = Pattern.compile("[\\w\\d-_.]+"); + private static final class PackageChunk { private final int id; private final String name; @@ -292,7 +295,7 @@ public class ResTableParser extends CommonBinaryParser { if (renamedKey != null) { return renamedKey; } - if (!origKeyName.isEmpty()) { + if (VALID_RES_KEY_PATTERN.matcher(origKeyName).matches()) { return origKeyName; } FieldNode constField = root.getConstValues().getGlobalConstFields().get(resRef);