Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1dcac12a authored by Nate Myren's avatar Nate Myren Committed by android-build-team Robot
Browse files

Ensure storage permission revoke happens for all users

When revoking storage permissions due to storage escalation, ensure the
revoke happens for all users

Fixes: 186034260
Bug: 171430330
Test: atest --user-type secondary_user StorageEscalationTest
Merged-In: Ieb8bb9cde1576e9eee131338d393b8a3528341ec
Change-Id: Ieb8bb9cde1576e9eee131338d393b8a3528341ec
(cherry picked from commit 8a1085bd)
parent 63c67f03
Loading
Loading
Loading
Loading
+22 −15
Original line number Diff line number Diff line
@@ -2293,10 +2293,11 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        }

        final int callingUid = Binder.getCallingUid();
        final int userId = UserHandle.getUserId(newPackage.getUid());
        for (int userId: mUserManagerInt.getUserIds()) {
            int numRequestedPermissions = newPackage.getRequestedPermissions().size();
            for (int i = 0; i < numRequestedPermissions; i++) {
            PermissionInfo permInfo = getPermissionInfo(newPackage.getRequestedPermissions().get(i),
                PermissionInfo permInfo = getPermissionInfo(
                        newPackage.getRequestedPermissions().get(i),
                        newPackage.getPackageName(), 0);
                if (permInfo == null || !STORAGE_PERMISSIONS.contains(permInfo.name)) {
                    continue;
@@ -2308,8 +2309,14 @@ public class PermissionManagerService extends IPermissionManager.Stub {
                                + downgradedSdk + " or newly requested legacy full storage "
                                + newlyRequestsLegacy);

                try {
                    revokeRuntimePermissionInternal(permInfo.name, newPackage.getPackageName(),
                            false, callingUid, userId, null, permissionCallback);
                } catch (IllegalStateException | SecurityException e) {
                    Log.e(TAG, "unable to revoke " + permInfo.name + " for "
                            + newPackage.getPackageName() + " user " + userId, e);
                }
            }
        }

    }