From 1ab4384c57efd63e166c9480d0cc7e8171aed595 Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Thu, 26 Oct 2017 08:45:21 -0700 Subject: [PATCH] Don't blindly reference package object This is a workaround for the bug that prevents the device from booting. Will keep the bug open to address the core issue. Also added some debug logs to try to catch this in the wild. Bug: 68260103 Test: Manual. Device boots. Change-Id: Ifed80c74897cc54eff2ee73df6dcc3b1e6f79170 --- .../pm/permission/PermissionManagerService.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index abe4f5ed44ad2..9e4940908bda0 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -288,7 +288,21 @@ public class PermissionManagerService { final String[] packages = mContext.getPackageManager().getPackagesForUid(uid); if (packages != null && packages.length > 0) { - final PackageParser.Package pkg = mPackageManagerInt.getPackage(packages[0]); +Slog.e(TAG, "TODD: Packages: " + Arrays.toString(packages)); + PackageParser.Package pkg = null; + for (String packageName : packages) { + pkg = mPackageManagerInt.getPackage(packageName); + if (pkg != null) { +Slog.e(TAG, "TODD: Using packge: " + packageName); + break; + } else { +Slog.e(TAG, "TODD: Missing packge: " + packageName); + } + } + if (pkg == null) { +Slog.e(TAG, "TODD: No package not found; UID: " + uid); + return PackageManager.PERMISSION_DENIED; + } if (pkg.mSharedUserId != null) { if (isCallerInstantApp) { return PackageManager.PERMISSION_DENIED;