summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hai Zhang <zhanghai@google.com> 2019-09-28 00:03:50 +0000
committer Hai Zhang <zhanghai@google.com> 2019-10-01 11:41:56 -0700
commit4fef76ab588174cd1be5d47f8291cbf779c2caf5 (patch)
treeba80c121eec2f8c13f125356a3989b07cafecac3
parent3019d9c8d71fad748a05b4961a7474e8c6631ad5 (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.java83
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java9
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);
}