Use allowlist in permission internally.

Now that our new APIs are named properly, clean up our naming
internally as well.

Bug: 158736025
Test: presubmit
Change-Id: If70f8b012dec2d4f80e7fa1d36c47f6fbe370e81
This commit is contained in:
Hai Zhang
2020-12-15 20:28:08 -08:00
parent df6b6a2858
commit 226c6ccb96
3 changed files with 48 additions and 47 deletions

View File

@@ -56,13 +56,13 @@ interface IPermissionManager {
void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
List<String> getWhitelistedRestrictedPermissions(String packageName,
List<String> getAllowlistedRestrictedPermissions(String packageName,
int flags, int userId);
boolean addWhitelistedRestrictedPermission(String packageName, String permName,
boolean addAllowlistedRestrictedPermission(String packageName, String permissionName,
int flags, int userId);
boolean removeWhitelistedRestrictedPermission(String packageName, String permName,
boolean removeAllowlistedRestrictedPermission(String packageName, String permissionName,
int flags, int userId);
void grantRuntimePermission(String packageName, String permName, int userId);
@@ -87,7 +87,7 @@ interface IPermissionManager {
List<String> getAutoRevokeExemptionGrantedPackages(int userId);
boolean setAutoRevokeWhitelisted(String packageName, boolean whitelisted, int userId);
boolean setAutoRevokeExempted(String packageName, boolean exempted, int userId);
boolean isAutoRevokeWhitelisted(String packageName, int userId);
boolean isAutoRevokeExempted(String packageName, int userId);
}

View File

@@ -510,7 +510,7 @@ public final class PermissionManager {
public Set<String> getAllowlistedRestrictedPermissions(@NonNull String packageName,
@PackageManager.PermissionWhitelistFlags int allowlistFlag) {
try {
final List<String> allowlist = mPermissionManager.getWhitelistedRestrictedPermissions(
final List<String> allowlist = mPermissionManager.getAllowlistedRestrictedPermissions(
packageName, allowlistFlag, mContext.getUserId());
if (allowlist == null) {
return Collections.emptySet();
@@ -578,7 +578,7 @@ public final class PermissionManager {
@NonNull String permissionName,
@PackageManager.PermissionWhitelistFlags int allowlistFlags) {
try {
return mPermissionManager.addWhitelistedRestrictedPermission(packageName,
return mPermissionManager.addAllowlistedRestrictedPermission(packageName,
permissionName, allowlistFlags, mContext.getUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -642,7 +642,7 @@ public final class PermissionManager {
@NonNull String permissionName,
@PackageManager.PermissionWhitelistFlags int allowlistFlags) {
try {
return mPermissionManager.removeWhitelistedRestrictedPermission(packageName,
return mPermissionManager.removeAllowlistedRestrictedPermission(packageName,
permissionName, allowlistFlags, mContext.getUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -668,7 +668,7 @@ public final class PermissionManager {
conditional = true)
public boolean isAutoRevokeExempted(@NonNull String packageName) {
try {
return mPermissionManager.isAutoRevokeWhitelisted(packageName, mContext.getUserId());
return mPermissionManager.isAutoRevokeExempted(packageName, mContext.getUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -697,7 +697,7 @@ public final class PermissionManager {
conditional = true)
public boolean setAutoRevokeExempted(@NonNull String packageName, boolean exempted) {
try {
return mPermissionManager.setAutoRevokeWhitelisted(packageName, exempted,
return mPermissionManager.setAutoRevokeExempted(packageName, exempted,
mContext.getUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();

View File

@@ -1117,8 +1117,9 @@ public class PermissionManagerService extends IPermissionManager.Stub {
mOnPermissionChangeListeners.removeListener(listener);
}
@Nullable
@Override
@Nullable public List<String> getWhitelistedRestrictedPermissions(@NonNull String packageName,
public List<String> getAllowlistedRestrictedPermissions(@NonNull String packageName,
@PermissionWhitelistFlags int flags, @UserIdInt int userId) {
Objects.requireNonNull(packageName);
Preconditions.checkFlagsArgument(flags,
@@ -1131,7 +1132,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
if (UserHandle.getCallingUserId() != userId) {
mContext.enforceCallingOrSelfPermission(
android.Manifest.permission.INTERACT_ACROSS_USERS,
"getWhitelistedRestrictedPermissions for user " + userId);
"getAllowlistedRestrictedPermissions for user " + userId);
}
final AndroidPackage pkg = mPackageManagerInt.getPackage(packageName);
@@ -1217,7 +1218,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
}
@Override
public boolean addWhitelistedRestrictedPermission(@NonNull String packageName,
public boolean addAllowlistedRestrictedPermission(@NonNull String packageName,
@NonNull String permName, @PermissionWhitelistFlags int flags,
@UserIdInt int userId) {
// Other argument checks are done in get/setAllowlistedRestrictedPermissions
@@ -1228,7 +1229,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
}
List<String> permissions =
getWhitelistedRestrictedPermissions(packageName, flags, userId);
getAllowlistedRestrictedPermissions(packageName, flags, userId);
if (permissions == null) {
permissions = new ArrayList<>(1);
}
@@ -1255,14 +1256,14 @@ public class PermissionManagerService extends IPermissionManager.Stub {
if (isImmutablyRestrictedPermission && mContext.checkCallingOrSelfPermission(
Manifest.permission.WHITELIST_RESTRICTED_PERMISSIONS)
!= PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Cannot modify whitelisting of an immutably "
throw new SecurityException("Cannot modify allowlisting of an immutably "
+ "restricted permission: " + permName);
}
return true;
}
@Override
public boolean removeWhitelistedRestrictedPermission(@NonNull String packageName,
public boolean removeAllowlistedRestrictedPermission(@NonNull String packageName,
@NonNull String permName, @PermissionWhitelistFlags int flags,
@UserIdInt int userId) {
// Other argument checks are done in get/setAllowlistedRestrictedPermissions
@@ -1273,7 +1274,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
}
final List<String> permissions =
getWhitelistedRestrictedPermissions(packageName, flags, userId);
getAllowlistedRestrictedPermissions(packageName, flags, userId);
if (permissions != null && permissions.remove(permName)) {
return setAllowlistedRestrictedPermissions(packageName, permissions,
flags, userId);
@@ -1328,20 +1329,20 @@ public class PermissionManagerService extends IPermissionManager.Stub {
+ " being installer on record or "
+ Manifest.permission.WHITELIST_RESTRICTED_PERMISSIONS);
}
final List<String> whitelistedPermissions =
getWhitelistedRestrictedPermissions(pkg.getPackageName(), flags, userId);
final List<String> allowlistedPermissions =
getAllowlistedRestrictedPermissions(pkg.getPackageName(), flags, userId);
if (permissions == null || permissions.isEmpty()) {
if (whitelistedPermissions == null || whitelistedPermissions.isEmpty()) {
if (allowlistedPermissions == null || allowlistedPermissions.isEmpty()) {
return true;
}
} else {
// Only the system can add and remove while the installer can only remove.
final int permissionCount = permissions.size();
for (int i = 0; i < permissionCount; i++) {
if ((whitelistedPermissions == null
|| !whitelistedPermissions.contains(permissions.get(i)))
if ((allowlistedPermissions == null
|| !allowlistedPermissions.contains(permissions.get(i)))
&& !isCallerPrivileged) {
throw new SecurityException("Adding to upgrade whitelist requires"
throw new SecurityException("Adding to upgrade allowlist requires"
+ Manifest.permission.WHITELIST_RESTRICTED_PERMISSIONS);
}
}
@@ -1349,7 +1350,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
if ((flags & PackageManager.FLAG_PERMISSION_WHITELIST_INSTALLER) != 0) {
if (!isCallerPrivileged && !isCallerInstallerOnRecord) {
throw new SecurityException("Modifying installer whitelist requires"
throw new SecurityException("Modifying installer allowlist requires"
+ " being installer on record or "
+ Manifest.permission.WHITELIST_RESTRICTED_PERMISSIONS);
}
@@ -1367,8 +1368,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
}
@Override
public boolean setAutoRevokeWhitelisted(
@NonNull String packageName, boolean whitelisted, int userId) {
public boolean setAutoRevokeExempted(
@NonNull String packageName, boolean exempted, int userId) {
Objects.requireNonNull(packageName);
final AndroidPackage pkg = mPackageManagerInt.getPackage(packageName);
@@ -1378,7 +1379,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
return false;
}
return setAutoRevokeExemptedInternal(pkg, whitelisted, userId);
return setAutoRevokeExemptedInternal(pkg, exempted, userId);
}
private boolean setAutoRevokeExemptedInternal(@NonNull AndroidPackage pkg, boolean exempted,
@@ -1386,7 +1387,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final int packageUid = UserHandle.getUid(userId, pkg.getUid());
if (mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_AUTO_REVOKE_MANAGED_BY_INSTALLER,
packageUid, pkg.getPackageName()) != MODE_ALLOWED) {
// Whitelist user set - don't override
// Allowlist user set - don't override
return false;
}
@@ -1420,7 +1421,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
}
@Override
public boolean isAutoRevokeWhitelisted(@NonNull String packageName, int userId) {
public boolean isAutoRevokeExempted(@NonNull String packageName, int userId) {
Objects.requireNonNull(packageName);
final AndroidPackage pkg = mPackageManagerInt.getPackage(packageName);
@@ -2872,7 +2873,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
boolean softRestricted = bp.isSoftRestricted();
// If permission policy is not ready we don't deal with restricted
// permissions as the policy may whitelist some permissions. Once
// permissions as the policy may allowlist some permissions. Once
// the policy is initialized we would re-evaluate permissions.
final boolean permissionPolicyInitialized =
isPermissionPolicyInitialized.get(userId);
@@ -3576,9 +3577,9 @@ public class PermissionManagerService extends IPermissionManager.Stub {
if (isInSystemConfigPrivAppPermissions(pkg, permissionName)) {
return true;
}
// Only enforce whitelist this on boot
// Only enforce the allowlist on boot
if (!mSystemReady
// Updated system apps do not need to be whitelisted
// Updated system apps do not need to be allowlisted
&& !isUpdatedSystemApp) {
final ApexManager apexManager = ApexManager.getInstance();
final String packageName = pkg.getPackageName();
@@ -3587,7 +3588,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final boolean isInUpdatedApex = containingApexPackageName != null
&& !apexManager.isFactory(apexManager.getPackageInfo(containingApexPackageName,
MATCH_ACTIVE_PACKAGE));
// Apps that are in updated apexs' do not need to be whitelisted
// Apps that are in updated apexs' do not need to be allowlisted
if (!isInUpdatedApex) {
// it's only a reportable violation if the permission isn't explicitly
// denied
@@ -3596,7 +3597,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
}
Slog.w(TAG, "Privileged permission " + permissionName + " for package "
+ packageName + " (" + pkg.getPath()
+ ") not in privapp-permissions whitelist");
+ ") not in privapp-permissions allowlist");
if (RoSystemProperties.CONTROL_PRIVAPP_PERMISSIONS_ENFORCE) {
synchronized (mLock) {
if (mPrivappPermissionsViolations == null) {
@@ -3775,10 +3776,10 @@ public class PermissionManagerService extends IPermissionManager.Stub {
int newFlags = oldFlags;
int mask = 0;
int whitelistFlagsCopy = allowlistFlags;
while (whitelistFlagsCopy != 0) {
final int flag = 1 << Integer.numberOfTrailingZeros(whitelistFlagsCopy);
whitelistFlagsCopy &= ~flag;
int allowlistFlagsCopy = allowlistFlags;
while (allowlistFlagsCopy != 0) {
final int flag = 1 << Integer.numberOfTrailingZeros(allowlistFlagsCopy);
allowlistFlagsCopy &= ~flag;
switch (flag) {
case FLAG_PERMISSION_WHITELIST_SYSTEM: {
mask |= FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT;
@@ -3825,26 +3826,26 @@ public class PermissionManagerService extends IPermissionManager.Stub {
updatePermissions = true;
final boolean wasWhitelisted = (oldFlags
final boolean wasAllowlisted = (oldFlags
& (PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT)) != 0;
final boolean isWhitelisted = (newFlags
final boolean isAllowlisted = (newFlags
& (PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT)) != 0;
// If the permission is policy fixed as granted but it is no longer
// on any of the whitelists we need to clear the policy fixed flag
// as whitelisting trumps policy i.e. policy cannot grant a non
// on any of the allowlists we need to clear the policy fixed flag
// as allowlisting trumps policy i.e. policy cannot grant a non
// grantable permission.
if ((oldFlags & PackageManager.FLAG_PERMISSION_POLICY_FIXED) != 0) {
if (!isWhitelisted && isGranted) {
if (!isAllowlisted && isGranted) {
mask |= PackageManager.FLAG_PERMISSION_POLICY_FIXED;
newFlags &= ~PackageManager.FLAG_PERMISSION_POLICY_FIXED;
}
}
// If we are whitelisting an app that does not support runtime permissions
// If we are allowlisting an app that does not support runtime permissions
// we need to make sure it goes through the permission review UI at launch.
if (pkg.getTargetSdkVersion() < Build.VERSION_CODES.M
&& !wasWhitelisted && isWhitelisted) {
&& !wasAllowlisted && isAllowlisted) {
mask |= PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED;
newFlags |= PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED;
}
@@ -3854,7 +3855,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
}
if (updatePermissions) {
// Update permission of this app to take into account the new whitelist state.
// Update permission of this app to take into account the new allowlist state.
restorePermissionState(pkg, false, pkg.getPackageName(), mDefaultPermissionCallback);
// If this resulted in losing a permission we need to kill the app.
@@ -4487,7 +4488,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
synchronized (mLock) {
if (mPrivappPermissionsViolations != null) {
throw new IllegalStateException("Signature|privileged permissions not in "
+ "privapp-permissions whitelist: " + mPrivappPermissionsViolations);
+ "privapp-permissions allowlist: " + mPrivappPermissionsViolations);
}
}