From e7b8f467c071662e80d51e6531869711993529ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=80=9E=E8=AF=9A?= Date: Mon, 24 Jul 2023 13:38:26 +0000 Subject: [PATCH] Prevent some key system applications from losing storage permissions The storage permissions of some system applications have been authorized by default and cannot be modified by users with SYSTEM_FIXED or POLICY_FIXED flags. Once revoked due to an self-upgrade package, the user cannot re-grant. Bug: 292732635 Test: manual Change-Id: Ifb2480fa05c281dcdf9129b453f168ed68ebfc5d --- .../server/pm/permission/PermissionManagerServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java index 9ed5aa7158abe..5221cfa85a7cf 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java @@ -2116,6 +2116,12 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt if (!isStorageOrMedia) { continue; } + boolean isSystemOrPolicyFixed = (getPermissionFlags(newPackage.getPackageName(), + permInfo.name, userId) & (FLAG_PERMISSION_SYSTEM_FIXED + | FLAG_PERMISSION_POLICY_FIXED)) != 0; + if (isSystemOrPolicyFixed) { + continue; + } EventLog.writeEvent(0x534e4554, "171430330", newPackage.getUid(), "Revoking permission " + permInfo.name + " from package "