From 6e52b5d76850ee60bbef2f3d8a2e47bd589e28e8 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Mon, 5 Apr 2010 14:33:01 -0700 Subject: [PATCH] 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 --- core/java/android/content/pm/PackageParser.java | 3 +++ services/java/com/android/server/PackageManagerService.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index b1dcb4ae2ecdd..2a20a2d0e363d 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 b95bae4d99d3b..b1bd263cdee5a 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)