Skip to content

Commit dd4cd2c

Browse files
Nate Myrenandroid-build-team Robot
authored andcommitted
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 37acd7ee52a732c9e9cf839611677195430fafe9)
1 parent 2e4cb8c commit dd4cd2c

1 file changed

Lines changed: 22 additions & 15 deletions

File tree

services/core/java/com/android/server/pm/permission/PermissionManagerService.java

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2293,23 +2293,30 @@ private void revokeStoragePermissionsIfScopeExpanded(
22932293
}
22942294

22952295
final int callingUid = Binder.getCallingUid();
2296-
final int userId = UserHandle.getUserId(newPackage.getUid());
2297-
int numRequestedPermissions = newPackage.getRequestedPermissions().size();
2298-
for (int i = 0; i < numRequestedPermissions; i++) {
2299-
PermissionInfo permInfo = getPermissionInfo(newPackage.getRequestedPermissions().get(i),
2300-
newPackage.getPackageName(), 0);
2301-
if (permInfo == null || !STORAGE_PERMISSIONS.contains(permInfo.name)) {
2302-
continue;
2303-
}
2296+
for (int userId: mUserManagerInt.getUserIds()) {
2297+
int numRequestedPermissions = newPackage.getRequestedPermissions().size();
2298+
for (int i = 0; i < numRequestedPermissions; i++) {
2299+
PermissionInfo permInfo = getPermissionInfo(
2300+
newPackage.getRequestedPermissions().get(i),
2301+
newPackage.getPackageName(), 0);
2302+
if (permInfo == null || !STORAGE_PERMISSIONS.contains(permInfo.name)) {
2303+
continue;
2304+
}
23042305

2305-
EventLog.writeEvent(0x534e4554, "171430330", newPackage.getUid(),
2306-
"Revoking permission " + permInfo.name + " from package "
2307-
+ newPackage.getPackageName() + " as either the sdk downgraded "
2308-
+ downgradedSdk + " or newly requested legacy full storage "
2309-
+ newlyRequestsLegacy);
2306+
EventLog.writeEvent(0x534e4554, "171430330", newPackage.getUid(),
2307+
"Revoking permission " + permInfo.name + " from package "
2308+
+ newPackage.getPackageName() + " as either the sdk downgraded "
2309+
+ downgradedSdk + " or newly requested legacy full storage "
2310+
+ newlyRequestsLegacy);
23102311

2311-
revokeRuntimePermissionInternal(permInfo.name, newPackage.getPackageName(),
2312-
false, callingUid, userId, null, permissionCallback);
2312+
try {
2313+
revokeRuntimePermissionInternal(permInfo.name, newPackage.getPackageName(),
2314+
false, callingUid, userId, null, permissionCallback);
2315+
} catch (IllegalStateException | SecurityException e) {
2316+
Log.e(TAG, "unable to revoke " + permInfo.name + " for "
2317+
+ newPackage.getPackageName() + " user " + userId, e);
2318+
}
2319+
}
23132320
}
23142321

23152322
}

0 commit comments

Comments
 (0)