From c91ff6f0f46846f3242c6936a155f3c2428d4b30 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Fri, 14 Jun 2019 14:35:42 -0700 Subject: [PATCH] Handle invalid package name in isPermissionsReviewRequired Fixes: 129522923 Test: atest PermissionsHostTests Change-Id: I2e0e65c5d10b88b5d74ed7eefa80fb381b22ddd7 --- .../java/com/android/server/pm/PackageManagerService.java | 8 ++++++-- .../server/pm/permission/PermissionManagerService.java | 7 ++++--- .../pm/permission/PermissionManagerServiceInternal.java | 4 +++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 4d84048fa603d..5f4d113601602 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -24334,8 +24334,12 @@ public class PackageManagerService extends IPackageManager.Stub @Override public boolean isPermissionsReviewRequired(String packageName, int userId) { synchronized (mPackages) { - return mPermissionManager.isPermissionsReviewRequired( - mPackages.get(packageName), userId); + final PackageParser.Package pkg = mPackages.get(packageName); + if (pkg == null) { + return false; + } + + return mPermissionManager.isPermissionsReviewRequired(pkg, userId); } } 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 4edd9eff73974..e4e0c554a060e 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -1897,14 +1897,15 @@ public class PermissionManagerService { return Boolean.TRUE == granted; } - private boolean isPermissionsReviewRequired(PackageParser.Package pkg, int userId) { + private boolean isPermissionsReviewRequired(@NonNull PackageParser.Package pkg, + @UserIdInt int userId) { // Permission review applies only to apps not supporting the new permission model. if (pkg.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.M) { return false; } // Legacy apps have the permission and get user consent on launch. - if (pkg == null || pkg.mExtras == null) { + if (pkg.mExtras == null) { return false; } final PackageSetting ps = (PackageSetting) pkg.mExtras; @@ -2952,7 +2953,7 @@ public class PermissionManagerService { PermissionManagerService.this.systemReady(); } @Override - public boolean isPermissionsReviewRequired(Package pkg, int userId) { + public boolean isPermissionsReviewRequired(@NonNull Package pkg, @UserIdInt int userId) { return PermissionManagerService.this.isPermissionsReviewRequired(pkg, userId); } @Override diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java index 9fb71f44716bc..313de3daffa34 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java @@ -18,6 +18,7 @@ package com.android.server.pm.permission; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UserIdInt; import android.content.pm.PackageManager; import android.content.pm.PackageManager.PermissionInfoFlags; import android.content.pm.PackageParser; @@ -65,7 +66,8 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager public abstract void systemReady(); - public abstract boolean isPermissionsReviewRequired(PackageParser.Package pkg, int userId); + public abstract boolean isPermissionsReviewRequired(@NonNull PackageParser.Package pkg, + @UserIdInt int userId); public abstract void grantRuntimePermission( @NonNull String permName, @NonNull String packageName, boolean overridePolicy,