From 567907b187ad2f78b3564d0a0405e3b207832e17 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Sat, 6 Aug 2016 07:57:19 -0400 Subject: [PATCH] Create fake names to prevent abuse from duplicate key names - fixes #894 --- .../main/java/brut/androlib/res/data/ResResSpec.java | 10 +++++++++- .../brut/androlib/res/data/value/ResValueFactory.java | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResResSpec.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResResSpec.java index 7e94af79..ecac54bf 100755 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResResSpec.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResResSpec.java @@ -33,7 +33,15 @@ public class ResResSpec { public ResResSpec(ResID id, String name, ResPackage pkg, ResTypeSpec type) { this.mId = id; - this.mName = (name.isEmpty() ? ("APKTOOL_DUMMYVAL_" + id.toString()) : name); + String cleanName; + + try { + ResResSpec resResSpec = type.getResSpec(name); + cleanName = name + "_APKTOOL_DUPLICATENAME_" + id.toString(); + } catch (AndrolibException ex) { + cleanName = (name.isEmpty() ? ("APKTOOL_DUMMYVAL_" + id.toString()) : name); + } + this.mName = cleanName; this.mPackage = pkg; this.mType = type; } diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/value/ResValueFactory.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/value/ResValueFactory.java index 1bd0fb81..031f5a47 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/value/ResValueFactory.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/value/ResValueFactory.java @@ -72,7 +72,7 @@ public class ResValueFactory { if (value.startsWith("res/")) { return new ResFileValue(value, rawValue); } - if (value.startsWith("r/")) { //AndroResGuard + if (value.startsWith("r/") || value.startsWith("R/")) { //AndroResGuard return new ResFileValue(value, rawValue); } return new ResStringValue(value, rawValue);