Fix AXML parser to handle obfuscated attribute names

This adds an additional check if the attribute namespace belongs to
Android namespace, and if so we try to decode using attribute decoder.

Fixes #1576.
This commit is contained in:
Brian Pak 2019-11-12 13:25:23 +09:00 committed by Connor Tumbleson
parent 31f25bc561
commit 31a23ba493

View File

@ -339,13 +339,12 @@ public class AXmlResourceParser implements XmlResourceParser {
// some attributes will return "", we must rely on the resource_id and refer to the frameworks // some attributes will return "", we must rely on the resource_id and refer to the frameworks
// to match the resource id to the name. ex: 0x101021C = versionName // to match the resource id to the name. ex: 0x101021C = versionName
if (value.length() != 0) { if (value.length() != 0 && !android_ns.equals(getAttributeNamespace(index))) {
return value; return value;
} else { } else {
try { try {
value = mAttrDecoder.decodeManifestAttr(getAttributeNameResource(index)); value = mAttrDecoder.decodeManifestAttr(getAttributeNameResource(index));
} catch (AndrolibException e) { } catch (AndrolibException e) {
value = "";
} }
return value; return value;
} }