2568467 System crash when installing corrupt APK
Also fix another crash I just saw in the package manager, when a
permission got left around from a previous install but as no
longer defined.
Change-Id: I33b87420f0c59e24b8b77fab8b0316461d99e048
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index b1dcb4a..2a20a2d 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -343,6 +343,9 @@
} catch (IOException e) {
Log.w(TAG, "Exception reading " + je.getName() + " in "
+ jarFile.getName(), e);
+ } catch (RuntimeException e) {
+ Log.w(TAG, "Exception reading " + je.getName() + " in "
+ + jarFile.getName(), e);
}
return null;
}
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index b95bae4..b1bd263 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -4006,6 +4006,9 @@
if (bp.protectionLevel == PermissionInfo.PROTECTION_NORMAL
|| bp.protectionLevel == PermissionInfo.PROTECTION_DANGEROUS) {
allowed = true;
+ } else if (bp.packageSetting == null) {
+ // This permission is invalid; skip it.
+ allowed = false;
} else if (bp.protectionLevel == PermissionInfo.PROTECTION_SIGNATURE
|| bp.protectionLevel == PermissionInfo.PROTECTION_SIGNATURE_OR_SYSTEM) {
allowed = (checkSignaturesLP(bp.packageSetting.signatures.mSignatures, pkg.mSignatures)