summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-11-20 06:50:17 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-11-20 06:50:17 +0000
commit6dc4e652a7b10e5fb7862096223266c8955d467a (patch)
tree2f0d68b005f715c24ece9c1ce115aa57a78877f6
parentd76793e26ad1f3dd330d08e98a98a75ac21d573e (diff)
parentc1537dc765de4ad984f6e04c941e4ea72be4548b (diff)
Merge "Pre-grant permissions split from install permissions"
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerService.java18
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);
}