diff options
| author | 2019-09-28 00:03:50 +0000 | |
|---|---|---|
| committer | 2019-10-01 11:41:56 -0700 | |
| commit | 4fef76ab588174cd1be5d47f8291cbf779c2caf5 (patch) | |
| tree | ba80c121eec2f8c13f125356a3989b07cafecac3 | |
| parent | 3019d9c8d71fad748a05b4961a7474e8c6631ad5 (diff) | |
Revert "Refactor permission checking to allow computing app op mode."
This reverts commit c0d49db8293395337430750981acf4f3ad9e2dc1.
Reason for revert: We are using a flag instead.
Change-Id: I22c8b9a8c64e4e0416813b02e99202cf036db598
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionManagerService.java | 83 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java | 9 |
2 files changed, 29 insertions, 63 deletions
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 0e2e1b77e501..53156345bb4e 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -793,68 +793,62 @@ public class PermissionManagerService extends IPermissionManager.Stub { final CheckPermissionDelegate checkPermissionDelegate; synchronized (mLock) { + if (mCheckPermissionDelegate == null) { + return checkPermissionImpl(permName, pkgName, userId); + } checkPermissionDelegate = mCheckPermissionDelegate; } - if (checkPermissionDelegate == null) { - return checkPermissionImpl(permName, pkgName, userId); - } return checkPermissionDelegate.checkPermission(permName, pkgName, userId, - this::checkPermissionImpl); + PermissionManagerService.this::checkPermissionImpl); } - private int checkPermissionImpl(@NonNull String permissionName, @NonNull String packageName, - @UserIdInt int userId) { - final PackageParser.Package pkg = mPackageManagerInt.getPackage(packageName); + private int checkPermissionImpl(String permName, String pkgName, int userId) { + final PackageParser.Package pkg = mPackageManagerInt.getPackage(pkgName); if (pkg == null) { return PackageManager.PERMISSION_DENIED; } - return checkPermissionInternal(pkg, true, permissionName, true, userId) - ? PackageManager.PERMISSION_GRANTED : PackageManager.PERMISSION_DENIED; + return checkPermissionInternal(pkg, true, permName, userId); } - private boolean checkPermissionInternal(@NonNull Package pkg, boolean isPackageExplicit, - @NonNull String permissionName, boolean useRequestedPermissionsForLegacyApps, - @UserIdInt int userId) { + private int checkPermissionInternal(@NonNull Package pkg, boolean isPackageExplicit, + @NonNull String permissionName, @UserIdInt int userId) { final int callingUid = getCallingUid(); if (isPackageExplicit || pkg.mSharedUserId == null) { if (mPackageManagerInt.filterAppAccess(pkg, callingUid, userId)) { - return false; + return PackageManager.PERMISSION_DENIED; } } else { if (mPackageManagerInt.getInstantAppPackageName(callingUid) != null) { - return false; + return PackageManager.PERMISSION_DENIED; } } final int uid = UserHandle.getUid(userId, pkg.applicationInfo.uid); final PackageSetting ps = (PackageSetting) pkg.mExtras; if (ps == null) { - return false; + return PackageManager.PERMISSION_DENIED; } final PermissionsState permissionsState = ps.getPermissionsState(); - if (checkSinglePermissionInternal(uid, permissionsState, permissionName, - useRequestedPermissionsForLegacyApps)) { - return true; + if (checkSinglePermissionInternal(uid, permissionsState, permissionName)) { + return PackageManager.PERMISSION_GRANTED; } final String fullerPermissionName = FULLER_PERMISSION_MAP.get(permissionName); - if (fullerPermissionName != null && checkSinglePermissionInternal(uid, permissionsState, - fullerPermissionName, useRequestedPermissionsForLegacyApps)) { - return true; + if (fullerPermissionName != null + && checkSinglePermissionInternal(uid, permissionsState, fullerPermissionName)) { + return PackageManager.PERMISSION_GRANTED; } - return false; + return PackageManager.PERMISSION_DENIED; } private boolean checkSinglePermissionInternal(int uid, - @NonNull PermissionsState permissionsState, @NonNull String permissionName, - boolean useRequestedPermissionsForLegacyApps) { + @NonNull PermissionsState permissionsState, @NonNull String permissionName) { boolean hasPermission = permissionsState.hasPermission(permissionName, UserHandle.getUserId(uid)); - if (!hasPermission && useRequestedPermissionsForLegacyApps - && mSettings.isPermissionRuntime(permissionName)) { + if (!hasPermission && mSettings.isPermissionRuntime(permissionName)) { final String[] packageNames = mContext.getPackageManager().getPackagesForUid(uid); final int packageNamesSize = packageNames != null ? packageNames.length : 0; for (int i = 0; i < packageNamesSize; i++) { @@ -897,13 +891,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { checkPermissionDelegate = mCheckPermissionDelegate; } return checkPermissionDelegate.checkUidPermission(permName, uid, - this::checkUidPermissionImpl); + PermissionManagerService.this::checkUidPermissionImpl); } - private int checkUidPermissionImpl(@NonNull String permissionName, int uid) { + private int checkUidPermissionImpl(String permName, int uid) { final PackageParser.Package pkg = mPackageManagerInt.getPackage(uid); - return checkUidPermissionInternal(uid, pkg, permissionName, true) - ? PackageManager.PERMISSION_GRANTED : PackageManager.PERMISSION_DENIED; + return checkUidPermissionInternal(pkg, uid, permName); } /** @@ -913,25 +906,24 @@ public class PermissionManagerService extends IPermissionManager.Stub { * * @see SystemConfig#getSystemPermissions() */ - private boolean checkUidPermissionInternal(int uid, @Nullable Package pkg, - @NonNull String permissionName, boolean useRequestedPermissionsForLegacyApps) { + private int checkUidPermissionInternal(@Nullable Package pkg, int uid, + @NonNull String permissionName) { if (pkg != null) { final int userId = UserHandle.getUserId(uid); - return checkPermissionInternal(pkg, false, permissionName, - useRequestedPermissionsForLegacyApps, userId); + return checkPermissionInternal(pkg, false, permissionName, userId); } if (checkSingleUidPermissionInternal(uid, permissionName)) { - return true; + return PackageManager.PERMISSION_GRANTED; } final String fullerPermissionName = FULLER_PERMISSION_MAP.get(permissionName); if (fullerPermissionName != null && checkSingleUidPermissionInternal(uid, fullerPermissionName)) { - return true; + return PackageManager.PERMISSION_GRANTED; } - return false; + return PackageManager.PERMISSION_DENIED; } private boolean checkSingleUidPermissionInternal(int uid, @NonNull String permissionName) { @@ -941,17 +933,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } - private int computeRuntimePermissionAppOpMode(int uid, @NonNull String permissionName) { - boolean granted = isUidPermissionGranted(uid, permissionName); - // TODO: Foreground permissions. - return granted ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED; - } - - private boolean isUidPermissionGranted(int uid, @NonNull String permissionName) { - final PackageParser.Package pkg = mPackageManagerInt.getPackage(uid); - return checkUidPermissionInternal(uid, pkg, permissionName, false); - } - @Override public void addOnPermissionsChangeListener(IOnPermissionsChangeListener listener) { mContext.enforceCallingOrSelfPermission( @@ -4477,12 +4458,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { StorageManager.UUID_PRIVATE_INTERNAL, true, mDefaultPermissionCallback); } } - - @Override - public int computeRuntimePermissionAppOpMode(int uid, @NonNull String permissionName) { - return PermissionManagerService.this.computeRuntimePermissionAppOpMode(uid, - permissionName); - } } private static final class OnPermissionChangeListeners extends Handler { diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java index 8f22f9245a53..04ec5ba04bb6 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java @@ -445,13 +445,4 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager /** Called when a new user has been created. */ public abstract void onNewUserCreated(@UserIdInt int userId); - - /** - * Compute an app op mode based on its runtime permission state. - * - * @param uid the uid for the app op - * @param permissionName the permission name for the app op - * @return the computed mode - */ - public abstract int computeRuntimePermissionAppOpMode(int uid, @NonNull String permissionName); } |