diff options
| author | 2023-05-25 16:09:30 +0000 | |
|---|---|---|
| committer | 2023-05-25 16:09:30 +0000 | |
| commit | da48fad668b6fa7e8a384e91aefd75d2ccaa9edd (patch) | |
| tree | 36f084e5d6bed6172db70c8beee42d00efe93624 | |
| parent | 7cfd239b4275685047ed0ad0345607bd863ea2f4 (diff) | |
Only call canUserCallLockTask when the caller is a DPC
Bug: 284200835
Test: btest a.d.c.LockTaskTest
Test: btest a.d.c.AffiliationIdsTest
Test: atest com.android.cts.devicepolicy.MixedDeviceOwnerTest
Change-Id: I9354d3f5b77ca9f5ed2a12938e3c225fed4422ab
| -rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index c96bfd716297..a9c60873a760 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -11113,7 +11113,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { || hasCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS); } - private boolean canUserUseLockTaskLocked(int userId) { + private boolean canDPCManagedUserUseLockTaskLocked(int userId) { if (isUserAffiliatedWithDeviceLocked(userId)) { return true; } @@ -11122,19 +11122,16 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { if (mOwners.hasDeviceOwner()) { return false; } - - if (!isPermissionCheckFlagEnabled() && !isPolicyEngineForFinanceFlagEnabled()) { - final ComponentName profileOwner = getProfileOwnerAsUser(userId); - if (profileOwner == null) { - return false; - } + + final ComponentName profileOwner = getProfileOwnerAsUser(userId); + if (profileOwner == null) { + return false; } - // Managed profiles are not allowed to use lock task if (isManagedProfile(userId)) { return false; } - + return true; } private void enforceCanQueryLockTaskLocked(ComponentName who, String callerPackageName) { @@ -11142,7 +11139,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { final int userId = caller.getUserId(); enforceCanQuery(MANAGE_DEVICE_POLICY_LOCK_TASK, caller.getPackageName(), userId); - if (!canUserUseLockTaskLocked(userId)) { + if ((isDeviceOwner(caller) || isProfileOwner(caller)) + && !canDPCManagedUserUseLockTaskLocked(userId)) { throw new SecurityException("User " + userId + " is not allowed to use lock task"); } } @@ -11158,7 +11156,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { caller.getPackageName(), userId ); - if (!canUserUseLockTaskLocked(userId)) { + if ((isDeviceOwner(caller) || isProfileOwner(caller)) + && !canDPCManagedUserUseLockTaskLocked(userId)) { throw new SecurityException("User " + userId + " is not allowed to use lock task"); } return enforcingAdmin; @@ -11169,7 +11168,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { || isDefaultDeviceOwner(caller) || isFinancedDeviceOwner(caller)); final int userId = caller.getUserId(); - if (!canUserUseLockTaskLocked(userId)) { + if (!canDPCManagedUserUseLockTaskLocked(userId)) { throw new SecurityException("User " + userId + " is not allowed to use lock task"); } } @@ -15101,7 +15100,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { final List<UserInfo> userInfos = mUserManager.getAliveUsers(); for (int i = userInfos.size() - 1; i >= 0; i--) { int userId = userInfos.get(i).id; - if (canUserUseLockTaskLocked(userId)) { + if (canDPCManagedUserUseLockTaskLocked(userId)) { continue; } |