summaryrefslogtreecommitdiffstats
path: root/core/java/android/content
diff options
context:
space:
mode:
authordcashman <dcashman@google.com>2015-05-26 14:57:24 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-26 14:57:27 +0000
commitb7b7b5ece86e32a7e5636d0c41c3dee373e8ac5a (patch)
tree2197deaa9276d8bf0d97b63b936c815489d36462 /core/java/android/content
parent82babcd83a568f9e938bf8b6b3b86b65e8b30e1f (diff)
parent5db0cd49e8553f45deec6e3db7ec84a5c78ee228 (diff)
downloadframeworks_base-b7b7b5ece86e32a7e5636d0c41c3dee373e8ac5a.zip
frameworks_base-b7b7b5ece86e32a7e5636d0c41c3dee373e8ac5a.tar.gz
frameworks_base-b7b7b5ece86e32a7e5636d0c41c3dee373e8ac5a.tar.bz2
Merge "Set error code on failed keyset manifest parsing." into mnc-dev
Diffstat (limited to 'core/java/android/content')
-rw-r--r--core/java/android/content/pm/PackageParser.java35
1 files changed, 21 insertions, 14 deletions
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index acc27c3..596c0e4 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -2047,8 +2047,9 @@ public class PackageParser {
String tagName = parser.getName();
if (tagName.equals("key-set")) {
if (currentKeySet != null) {
- Slog.w(TAG, "Improperly nested 'key-set' tag at "
- + parser.getPositionDescription());
+ outError[0] = "Improperly nested 'key-set' tag at "
+ + parser.getPositionDescription();
+ mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return false;
}
final TypedArray sa = res.obtainAttributes(attrs,
@@ -2061,8 +2062,9 @@ public class PackageParser {
sa.recycle();
} else if (tagName.equals("public-key")) {
if (currentKeySet == null) {
- Slog.w(TAG, "Improperly nested 'public-key' tag at "
- + parser.getPositionDescription());
+ outError[0] = "Improperly nested 'key-set' tag at "
+ + parser.getPositionDescription();
+ mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return false;
}
final TypedArray sa = res.obtainAttributes(attrs,
@@ -2072,8 +2074,9 @@ public class PackageParser {
final String encodedKey = sa.getNonResourceString(
com.android.internal.R.styleable.AndroidManifestPublicKey_value);
if (encodedKey == null && publicKeys.get(publicKeyName) == null) {
- Slog.w(TAG, "'public-key' " + publicKeyName + " must define a public-key value"
- + " on first use at " + parser.getPositionDescription());
+ outError[0] = "'public-key' " + publicKeyName + " must define a public-key value"
+ + " on first use at " + parser.getPositionDescription();
+ mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
sa.recycle();
return false;
} else if (encodedKey != null) {
@@ -2093,9 +2096,10 @@ public class PackageParser {
/* public-key first definition, or matches old definition */
publicKeys.put(publicKeyName, currentKey);
} else {
- Slog.w(TAG, "Value of 'public-key' " + publicKeyName
+ outError[0] = "Value of 'public-key' " + publicKeyName
+ " conflicts with previously defined value at "
- + parser.getPositionDescription());
+ + parser.getPositionDescription();
+ mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
sa.recycle();
return false;
}
@@ -2112,9 +2116,10 @@ public class PackageParser {
sa.recycle();
XmlUtils.skipCurrentTag(parser);
} else if (RIGID_PARSER) {
- Slog.w(TAG, "Bad element under <key-sets>: " + parser.getName()
+ outError[0] = "Bad element under <key-sets>: " + parser.getName()
+ " at " + mArchiveSourcePath + " "
- + parser.getPositionDescription());
+ + parser.getPositionDescription();
+ mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return false;
} else {
Slog.w(TAG, "Unknown element under <key-sets>: " + parser.getName()
@@ -2126,8 +2131,9 @@ public class PackageParser {
}
Set<String> publicKeyNames = publicKeys.keySet();
if (publicKeyNames.removeAll(definedKeySets.keySet())) {
- Slog.w(TAG, "Package" + owner.packageName + " AndroidManifext.xml "
- + "'key-set' and 'public-key' names must be distinct.");
+ outError[0] = "Package" + owner.packageName + " AndroidManifext.xml "
+ + "'key-set' and 'public-key' names must be distinct.";
+ mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return false;
}
owner.mKeySetMapping = new ArrayMap<String, ArraySet<PublicKey>>();
@@ -2152,8 +2158,9 @@ public class PackageParser {
if (owner.mKeySetMapping.keySet().containsAll(upgradeKeySets)) {
owner.mUpgradeKeySets = upgradeKeySets;
} else {
- Slog.w(TAG, "Package" + owner.packageName + " AndroidManifext.xml "
- + "does not define all 'upgrade-key-set's .");
+ outError[0] ="Package" + owner.packageName + " AndroidManifext.xml "
+ + "does not define all 'upgrade-key-set's .";
+ mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return false;
}
return true;