diff options
| author | 2019-02-22 04:38:22 +0000 | |
|---|---|---|
| committer | 2019-02-22 04:38:22 +0000 | |
| commit | e346f7530d01a835277b14def6cd9ad9241e0d7f (patch) | |
| tree | 42f9e191801b35fe24e19a2fbbaf8d3ba5132724 | |
| parent | f4ac4e7fb1cb13f9c7ef7e683ce3455d99ed028c (diff) | |
| parent | 8277ab6fb2bb975f7d9982d64c2a929cb01e2b8a (diff) | |
Merge changes from topic "perm-flags"
* changes:
Do not revoke pre-M perms on upgrade
Also apply removed permission flags
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionManagerService.java | 38 |
1 files changed, 19 insertions, 19 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 8df5a71de43e..f9ba6da3f2a5 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -35,6 +35,7 @@ import static android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_WHEN_REQU import static android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED; import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED; import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET; +import static android.content.pm.PackageManager.MASK_PERMISSION_FLAGS; import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; import static android.os.UserHandle.getAppId; import static android.os.UserHandle.getUid; @@ -1031,7 +1032,8 @@ public class PermissionManagerService { updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); } - permissionsState.updatePermissionFlags(bp, userId, flags, flags); + permissionsState.updatePermissionFlags(bp, userId, + MASK_PERMISSION_FLAGS, flags); } } break; @@ -1081,7 +1083,8 @@ public class PermissionManagerService { updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); } - permissionsState.updatePermissionFlags(bp, userId, flags, flags); + permissionsState.updatePermissionFlags(bp, userId, + MASK_PERMISSION_FLAGS, flags); } } break; @@ -1198,29 +1201,23 @@ public class PermissionManagerService { if ((flags & FLAG_PERMISSION_REVOKE_WHEN_REQUESTED) != 0) { BasePermission bp = mSettings.getPermissionLocked(permission); - ps.updatePermissionFlags(bp, userId, - FLAG_PERMISSION_REVOKE_WHEN_REQUESTED - | FLAG_PERMISSION_USER_FIXED | FLAG_PERMISSION_USER_SET, - 0); - updatedUserIds = ArrayUtils.appendInt(updatedUserIds, - userId); + int flagsToRemove = FLAG_PERMISSION_REVOKE_WHEN_REQUESTED; if ((flags & (FLAG_PERMISSION_GRANTED_BY_DEFAULT | FLAG_PERMISSION_POLICY_FIXED | FLAG_PERMISSION_SYSTEM_FIXED)) - == 0) { - if (supportsRuntimePermissions) { - int revokeResult = ps.revokeRuntimePermission(bp, userId); - if (revokeResult != PERMISSION_OPERATION_FAILURE) { - if (DEBUG_PERMISSIONS) { - Slog.i(TAG, "Revoking runtime permission " - + permission + " for " + pkgName - + " as it is now requested"); - } + == 0 && supportsRuntimePermissions) { + int revokeResult = ps.revokeRuntimePermission(bp, userId); + if (revokeResult != PERMISSION_OPERATION_FAILURE) { + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, "Revoking runtime permission " + + permission + " for " + pkgName + + " as it is now requested"); } - } else { - setAppOpMode(permission, pkg, userId, MODE_IGNORED); } + flagsToRemove |= + FLAG_PERMISSION_USER_FIXED | FLAG_PERMISSION_USER_SET; + List<String> fgPerms = mBackgroundPermissions.get(permission); if (fgPerms != null) { int numFgPerms = fgPerms.size(); @@ -1238,6 +1235,9 @@ public class PermissionManagerService { } } } + + ps.updatePermissionFlags(bp, userId, flagsToRemove, 0); + updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); } } } |