Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 593a8f87 authored by Rhed Jao's avatar Rhed Jao
Browse files

Passing correct package's user id into the filterAppAccess api

filterAppAccess returns true if the package is not installed under
the given user id. This cl Updated AppOps#checkPackage to use
the correct user id to fix a Cts test.

Bug: 236875597
Test: atest android.devicepolicy.cts.EnrollmentSpecificIdTest
Change-Id: I5cd418e76159db7e1893fd6462d645e4d1d3c67f
parent bdfb8336
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -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