Merge "Remove fixed grant of READ_PHONE_STATE and cleanup" into sc-dev

This commit is contained in:
Hall Liu
2021-04-21 21:42:00 +00:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 10 deletions

View File

@@ -205,9 +205,6 @@
<split-permission name="android.permission.WRITE_EXTERNAL_STORAGE"> <split-permission name="android.permission.WRITE_EXTERNAL_STORAGE">
<new-permission name="android.permission.READ_EXTERNAL_STORAGE" /> <new-permission name="android.permission.READ_EXTERNAL_STORAGE" />
</split-permission> </split-permission>
<split-permission name="android.permission.READ_PRIVILEGED_PHONE_STATE">
<new-permission name="android.permission.READ_PHONE_STATE" />
</split-permission>
<split-permission name="android.permission.READ_CONTACTS" <split-permission name="android.permission.READ_CONTACTS"
targetSdk="16"> targetSdk="16">
<new-permission name="android.permission.READ_CALL_LOG" /> <new-permission name="android.permission.READ_CALL_LOG" />

View File

@@ -422,19 +422,24 @@ final class DefaultPermissionGrantPolicy {
grantRuntimePermissionsForSystemPackage(pm, userId, pkg); grantRuntimePermissionsForSystemPackage(pm, userId, pkg);
} }
// Grant READ_PHONE_STATE to all system apps that have READ_PRIVILEGED_PHONE_STATE // Re-grant READ_PHONE_STATE as non-fixed to all system apps that have
// READ_PRIVILEGED_PHONE_STATE and READ_PHONE_STATE granted -- this is to undo the fixed
// grant from R.
for (PackageInfo pkg : packages) { for (PackageInfo pkg : packages) {
if (pkg == null if (pkg == null
|| !doesPackageSupportRuntimePermissions(pkg) || !doesPackageSupportRuntimePermissions(pkg)
|| ArrayUtils.isEmpty(pkg.requestedPermissions) || ArrayUtils.isEmpty(pkg.requestedPermissions)
|| !pm.isGranted(Manifest.permission.READ_PRIVILEGED_PHONE_STATE, || !pm.isGranted(Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
pkg, UserHandle.of(userId))) { pkg, UserHandle.of(userId))
|| !pm.isGranted(Manifest.permission.READ_PHONE_STATE, pkg,
UserHandle.of(userId))) {
continue; continue;
} }
grantRuntimePermissions(pm, pkg,
Collections.singleton(Manifest.permission.READ_PHONE_STATE), pm.updatePermissionFlags(Manifest.permission.READ_PHONE_STATE, pkg,
true, // systemFixed PackageManager.FLAG_PERMISSION_SYSTEM_FIXED,
userId); 0,
UserHandle.of(userId));
} }
} }
@@ -1723,7 +1728,7 @@ final class DefaultPermissionGrantPolicy {
int flagMask, int flagValues, @NonNull UserHandle user) { int flagMask, int flagValues, @NonNull UserHandle user) {
PermissionState state = getPermissionState(permission, pkg, user); PermissionState state = getPermissionState(permission, pkg, user);
state.initFlags(); state.initFlags();
state.newFlags |= flagValues & flagMask; state.newFlags = (state.newFlags & ~flagMask) | (flagValues & flagMask);
} }
@Override @Override