Merge "Filter package visibility in checkExistsAndEnforceCannotModifyImmutablyRestrictedPermission()." into sc-dev am: 4c2c1530bf

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14390030

Change-Id: I0df024e71ed61c84c7df3130628d524ba68b0367
This commit is contained in:
TreeHugger Robot
2021-08-19 18:15:04 +00:00
committed by Automerger Merge Worker

View File

@@ -1215,6 +1215,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
private boolean checkExistsAndEnforceCannotModifyImmutablyRestrictedPermission(
@NonNull String permName) {
final String permissionPackageName;
final boolean isImmutablyRestrictedPermission;
synchronized (mLock) {
final Permission bp = mRegistry.getPermission(permName);
@@ -1222,15 +1223,25 @@ public class PermissionManagerService extends IPermissionManager.Stub {
Slog.w(TAG, "No such permissions: " + permName);
return false;
}
permissionPackageName = bp.getPackageName();
isImmutablyRestrictedPermission = bp.isHardOrSoftRestricted()
&& bp.isImmutablyRestricted();
}
final int callingUid = getCallingUid();
final int callingUserId = UserHandle.getUserId(callingUid);
if (mPackageManagerInt.filterAppAccess(permissionPackageName, callingUid, callingUserId)) {
EventLog.writeEvent(0x534e4554, "186404356", callingUid, permName);
return false;
}
if (isImmutablyRestrictedPermission && mContext.checkCallingOrSelfPermission(
Manifest.permission.WHITELIST_RESTRICTED_PERMISSIONS)
!= PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Cannot modify allowlisting of an immutably "
+ "restricted permission: " + permName);
}
return true;
}