summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Rhed Jao <rhedjao@google.com> 2022-06-27 03:31:11 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-06-27 03:31:11 +0000
commit85ff9c86a5f9beb6ecbff27a0463123acd0db8b6 (patch)
treea8a3e952b584c4594f06c7af5e977dce9310b64f
parentd82ea4bd759a6cacbcc36765f35b8c9c5bcc6e4f (diff)
parent593a8f87b8e70fc64ae74075925a263a7f1680cd (diff)
Merge "Passing correct package's user id into the filterAppAccess api"
-rw-r--r--services/core/java/com/android/server/appop/AppOpsService.java11
1 files changed, 6 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index 5c7af47682e4..d38cd8ef6181 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -3126,8 +3126,8 @@ public class AppOpsService extends IAppOpsService.Stub {
if (callback == null) {
return;
}
- final boolean mayWatchPackageName =
- packageName != null && !filterAppAccessUnlocked(packageName);
+ final boolean mayWatchPackageName = packageName != null
+ && !filterAppAccessUnlocked(packageName, UserHandle.getUserId(callingUid));
synchronized (this) {
int switchOp = (op != AppOpsManager.OP_NONE) ? AppOpsManager.opToSwitch(op) : op;
@@ -3331,7 +3331,8 @@ public class AppOpsService extends IAppOpsService.Stub {
// When the caller is the system, it's possible that the packageName is the special
// one (e.g., "root") which isn't actually existed.
if (resolveUid(packageName) == uid
- || (isPackageExisted(packageName) && !filterAppAccessUnlocked(packageName))) {
+ || (isPackageExisted(packageName)
+ && !filterAppAccessUnlocked(packageName, UserHandle.getUserId(uid)))) {
return AppOpsManager.MODE_ALLOWED;
}
return AppOpsManager.MODE_ERRORED;
@@ -3350,10 +3351,10 @@ public class AppOpsService extends IAppOpsService.Stub {
*
* NOTE: This must not be called while synchronized on {@code this} to avoid dead locks
*/
- private boolean filterAppAccessUnlocked(String packageName) {
+ private boolean filterAppAccessUnlocked(String packageName, int userId) {
final int callingUid = Binder.getCallingUid();
return LocalServices.getService(PackageManagerInternal.class)
- .filterAppAccess(packageName, callingUid, UserHandle.getUserId(callingUid));
+ .filterAppAccess(packageName, callingUid, userId);
}
@Override