From 63a3938f85fc7aeb651bf6876f58d9911675b052 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Wed, 18 Aug 2021 21:46:27 +0000 Subject: [PATCH] Revoke internal permissions upon definition change. Similar to runtime permissions. This is a follow-up to ag/15615897 but only on T+ for safety. Test: manual Change-Id: Ia32f01b9aeecd00d675235e0bfe6d9eaf1eea7eb --- .../java/com/android/server/pm/permission/Permission.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/permission/Permission.java b/services/core/java/com/android/server/pm/permission/Permission.java index 75f37257e35e6..041c4fea587eb 100644 --- a/services/core/java/com/android/server/pm/permission/Permission.java +++ b/services/core/java/com/android/server/pm/permission/Permission.java @@ -431,6 +431,8 @@ public final class Permission { } } } + boolean wasNonInternal = permission != null && permission.mType != TYPE_CONFIG + && !permission.isInternal(); boolean wasNonRuntime = permission != null && permission.mType != TYPE_CONFIG && !permission.isRuntime(); if (permission == null) { @@ -476,10 +478,10 @@ public final class Permission { r.append("DUP:"); r.append(permissionInfo.name); } - if ((permission.isInternal() && ownerChanged) + if ((permission.isInternal() && (ownerChanged || wasNonInternal)) || (permission.isRuntime() && (ownerChanged || wasNonRuntime))) { // If this is an internal/runtime permission and the owner has changed, or this wasn't a - // runtime permission, then permission state should be cleaned up. + // internal/runtime permission, then permission state should be cleaned up. permission.mDefinitionChanged = true; } if (PackageManagerService.DEBUG_PACKAGE_SCANNING && r != null) {