fix: prevent NPE during decode app with no matching resId for resource

This commit is contained in:
Connor Tumbleson 2020-11-27 17:40:07 -05:00 committed by Connor Tumbleson
parent cd7405d31b
commit b896b4491a

View File

@ -21,6 +21,7 @@ import android.util.TypedValue;
import brut.androlib.AndrolibException;
import brut.androlib.res.data.ResID;
import brut.androlib.res.xml.ResXmlEncoders;
import brut.common.BrutException;
import brut.util.ExtDataInput;
import com.google.common.io.LittleEndianDataInputStream;
import java.io.DataInput;
@ -339,16 +340,16 @@ public class AXmlResourceParser implements XmlResourceParser {
// 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
if (value.length() != 0 && !android_ns.equals(getAttributeNamespace(index))) {
return value;
} else {
if (value.length() == 0 || android_ns.equals(getAttributeNamespace(index))) {
try {
int resourceId = getAttributeNameResource(index);
if (resourceId != 0) {
value = mAttrDecoder.decodeManifestAttr(getAttributeNameResource(index));
} catch (AndrolibException e) {
}
} catch (AndrolibException | NullPointerException e) { }
}
return value;
}
}
@Override
public int getAttributeNameResource(int index) {