diff options
| author | 2018-11-20 06:50:17 +0000 | |
|---|---|---|
| committer | 2018-11-20 06:50:17 +0000 | |
| commit | 6dc4e652a7b10e5fb7862096223266c8955d467a (patch) | |
| tree | 2f0d68b005f715c24ece9c1ce115aa57a78877f6 | |
| parent | d76793e26ad1f3dd330d08e98a98a75ac21d573e (diff) | |
| parent | c1537dc765de4ad984f6e04c941e4ea72be4548b (diff) | |
Merge "Pre-grant permissions split from install permissions"
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionManagerService.java | 18 |
1 files changed, 16 insertions, 2 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 b7889357ea25..c5d38db2c469 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -1242,6 +1242,9 @@ public class PermissionManagerService { && ps.getRuntimePermissionState(sourcePerm, userId).isGranted()) { isGranted = true; break; + } else if (ps.hasInstallPermission(sourcePerm)) { + isGranted = true; + break; } } @@ -1348,8 +1351,18 @@ public class PermissionManagerService { } } } else { - if (!origPs.hasRequestedPermission(sourcePerms)) { - // Both permissions are new, do nothing + boolean inheritsFromInstallPerm = false; + for (int sourcePermNum = 0; sourcePermNum < sourcePerms.size(); + sourcePermNum++) { + if (ps.hasInstallPermission(sourcePerms.valueAt(sourcePermNum))) { + inheritsFromInstallPerm = true; + break; + } + } + + if (!origPs.hasRequestedPermission(sourcePerms) + && !inheritsFromInstallPerm) { + // Both permissions are new so nothing to inherit. if (DEBUG_PERMISSIONS) { Slog.i(TAG, newPerm + " does not inherit from " + sourcePerms + " for " + pkgName @@ -1358,6 +1371,7 @@ public class PermissionManagerService { break; } else { + // Inherit from new install or existing runtime permissions inheritPermissionStateToNewImplicitPermissionLocked(sourcePerms, newPerm, ps, pkg, userId); } |