mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-16 11:24:33 -05:00
7182e4d63a
Signed-off-by: Tavi <tavi@divested.dev>
59 lines
4.0 KiB
Diff
59 lines
4.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Micay <danielmicay@gmail.com>
|
|
Date: Tue, 31 May 2022 04:18:35 -0400
|
|
Subject: [PATCH] extend special runtime permission implementation
|
|
|
|
---
|
|
.../server/pm/permission/PermissionManagerService.java | 10 +++++-----
|
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
|
|
|
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 ab4f7821eba9..c3a2332e8a16 100644
|
|
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
|
|
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
|
|
@@ -1882,7 +1882,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
|
// permission as requiring a review as this is the initial state.
|
|
final int uid = mPackageManagerInt.getPackageUid(packageName, 0, userId);
|
|
final int targetSdk = mPackageManagerInt.getUidTargetSdkVersion(uid);
|
|
- final int flags = (targetSdk < Build.VERSION_CODES.M && isRuntimePermission)
|
|
+ final int flags = (targetSdk < Build.VERSION_CODES.M && isRuntimePermission && !isSpecialRuntimePermission(permName))
|
|
? FLAG_PERMISSION_REVIEW_REQUIRED | FLAG_PERMISSION_REVOKED_COMPAT
|
|
: 0;
|
|
|
|
@@ -2766,7 +2766,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
|
FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT,
|
|
FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT);
|
|
}
|
|
- if (targetSdkVersion < Build.VERSION_CODES.M) {
|
|
+ if (targetSdkVersion < Build.VERSION_CODES.M && !isSpecialRuntimePermission(permissionName)) {
|
|
uidState.updatePermissionFlags(permission,
|
|
PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED
|
|
| PackageManager.FLAG_PERMISSION_REVOKED_COMPAT,
|
|
@@ -2856,7 +2856,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
|
// continue;
|
|
// }
|
|
|
|
- if (bp.isRuntimeOnly() && !appSupportsRuntimePermissions) {
|
|
+ if (bp.isRuntimeOnly() && !appSupportsRuntimePermissions && !isSpecialRuntimePermission(bp.getName())) {
|
|
if (DEBUG_PERMISSIONS) {
|
|
Log.i(TAG, "Denying runtime-only permission " + bp.getName()
|
|
+ " for package " + friendlyName);
|
|
@@ -2961,7 +2961,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
|
boolean restrictionApplied = (origState.getPermissionFlags(
|
|
bp.getName()) & FLAG_PERMISSION_APPLY_RESTRICTION) != 0;
|
|
|
|
- if (appSupportsRuntimePermissions) {
|
|
+ if (appSupportsRuntimePermissions || isSpecialRuntimePermission(bp.getName())) {
|
|
// If hard restricted we don't allow holding it
|
|
if (permissionPolicyInitialized && hardRestricted) {
|
|
if (!restrictionExempt) {
|
|
@@ -3045,7 +3045,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
|
if (restrictionApplied) {
|
|
flags &= ~FLAG_PERMISSION_APPLY_RESTRICTION;
|
|
// Dropping restriction on a legacy app implies a review
|
|
- if (!appSupportsRuntimePermissions) {
|
|
+ if (!appSupportsRuntimePermissions && !isSpecialRuntimePermission(bp.getName())) {
|
|
flags |= FLAG_PERMISSION_REVIEW_REQUIRED;
|
|
}
|
|
wasChanged = true;
|