From a3c6c09c6976138e9d5ac0ab4dc9aea50c40fbeb Mon Sep 17 00:00:00 2001 From: Daniel Colascione Date: Thu, 27 Feb 2020 03:51:30 -0800 Subject: [PATCH] Flush permission cache when we change delegates Delegates can change the results of permission checks. This change assumes that delegate results are not dynamic, but that seems to be the case in practice. Just in case, re-setting the delegate acts as a cache flush. Test: atest UiAutomationTest#testAdoptAllShellPermissions Bug: b/150265749 Change-Id: I26e7330ebbdeaf2e7e282f3c770b962688aabf41 --- .../android/server/pm/permission/PermissionManagerService.java | 3 +++ 1 file changed, 3 insertions(+) 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 f647b6a94bf6b..4a85027854d62 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -4471,6 +4471,9 @@ public class PermissionManagerService extends IPermissionManager.Stub { @Override public void setCheckPermissionDelegate(CheckPermissionDelegate delegate) { synchronized (mLock) { + if (delegate != null || mCheckPermissionDelegate != null) { + PackageManager.invalidatePackageInfoCache(); + } mCheckPermissionDelegate = delegate; } }