diff options
-rw-r--r-- | core/java/android/content/pm/PackageParser.java | 3 | ||||
-rw-r--r-- | services/java/com/android/server/PackageManagerService.java | 3 |
2 files changed, 6 insertions, 0 deletions
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 @@ public class PackageParser { } 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 @@ class PackageManagerService extends IPackageManager.Stub { 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) |