Don't create system fixed, revoked permissions
.. when restricting a previously unrestricted permission.
Fixes: 134069814
Test: Upgraded from Q (before loc bg was restricted) to Q (after log bg
was restricted) and saw previously system-fixed loc bg perm to be
re-granted via the DefaultPermissionGrantPolicy.
Change-Id: I641a95a0e481ca057c4fb7e05b29b18b7a8c10b6
(cherry picked from commit 6a59bbe2be05c374df96765600f616df8b4c564c)
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 267fbf0..beb7268 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -1173,6 +1173,14 @@
}
}
+ if (hardRestricted && !restrictionExempt
+ && (flags & FLAG_PERMISSION_SYSTEM_FIXED) != 0) {
+ // Applying a hard restriction implies revoking it. This might
+ // lead to a system-fixed, revoked permission.
+ flags &= ~FLAG_PERMISSION_SYSTEM_FIXED;
+ wasChanged = true;
+ }
+
if (wasChanged) {
updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId);
}