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

Commit 05029e5f authored by Alex Johnston's avatar Alex Johnston Committed by Android (Google) Code Review
Browse files

Merge "Replace enforce permission checks in DPMS"

parents 5d3df7f1 65eacc95
Loading
Loading
Loading
Loading
+270 −131

File changed.

Preview size limit exceeded, changes collapsed.

+2 −0
Original line number Diff line number Diff line
@@ -4465,6 +4465,7 @@ public class DevicePolicyManagerTest extends DpmTestBase {
        final int MANAGED_PROFILE_ADMIN_UID = UserHandle.getUid(MANAGED_PROFILE_USER_ID, 19436);
        addManagedProfile(admin1, MANAGED_PROFILE_ADMIN_UID, admin1);
        mContext.binder.callingUid = MANAGED_PROFILE_ADMIN_UID;
        mServiceContext.permissions.add(permission.INTERACT_ACROSS_USERS_FULL);

        // Even if the caller is the managed profile, the current user is the user 0
        when(getServices().iactivityManager.getCurrentUser())
@@ -5694,6 +5695,7 @@ public class DevicePolicyManagerTest extends DpmTestBase {

        final long ident = mServiceContext.binder.clearCallingIdentity();
        configureContextForAccess(mServiceContext, true);
        mServiceContext.permissions.add(permission.MARK_DEVICE_ORGANIZATION_OWNED);

        mServiceContext.binder.callingUid =
                UserHandle.getUid(CALLER_USER_HANDLE,
+23 −13
Original line number Diff line number Diff line
@@ -259,18 +259,7 @@ public class DpmMockContext extends MockContext {

    @Override
    public int checkPermission(String permission, int pid, int uid) {
        if (UserHandle.isSameApp(binder.getCallingUid(), SYSTEM_UID)) {
            return PackageManager.PERMISSION_GRANTED; // Assume system has all permissions.
        }
        List<String> permissions = binder.callingPermissions.get(binder.getCallingUid());
        if (permissions == null) {
            permissions = callerPermissions;
        }
        if (permissions.contains(permission)) {
            return PackageManager.PERMISSION_GRANTED;
        } else {
            return PackageManager.PERMISSION_DENIED;
        }
        return checkPermission(permission);
    }

    @Override
@@ -480,11 +469,32 @@ public class DpmMockContext extends MockContext {

    @Override
    public int checkCallingPermission(String permission) {
        return spiedContext.checkCallingPermission(permission);
        return checkPermission(permission);
    }

    @Override
    public int checkCallingOrSelfPermission(String permission) {
        return checkPermission(permission);
    }

    @Override
    public void startActivityAsUser(Intent intent, UserHandle userHandle) {
        spiedContext.startActivityAsUser(intent, userHandle);
    }

    private int checkPermission(String permission) {
        if (UserHandle.isSameApp(binder.getCallingUid(), SYSTEM_UID)) {
            return PackageManager.PERMISSION_GRANTED; // Assume system has all permissions.
        }
        List<String> permissions = binder.callingPermissions.get(binder.getCallingUid());
        if (permissions == null) {
            permissions = callerPermissions;
        }
        if (permissions.contains(permission)) {
            return PackageManager.PERMISSION_GRANTED;
        } else {
            return PackageManager.PERMISSION_DENIED;
        }
    }

}