diff options
author | 2024-04-23 16:44:06 +0000 | |
---|---|---|
committer | 2024-04-24 11:04:03 +0000 | |
commit | 4458ad7f23524d890cc6a2bc26500c5f19169d26 (patch) | |
tree | caf0f3b1ac58d9dd3b4c3fba6cbb34f237db51ce | |
parent | 81f6b5c690b5d5e1bf8c87523ab28ee5ad1d09ed (diff) |
Fix bug in createAndManageUser on non hsum devices
The recent changes for blocking createAndManageUser accidentally blocked it even on non-hsum devices if the DPC had specified the single_user mode in its manifest.
Bug: 336547982
Test: atest com.android.cts.devicepolicy.DeviceOwnerTest
Change-Id: I937c68eb1a6eef6cc26e18d7f17f651e4dac072e
-rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index be235b3bef92..4f4d3904afc6 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -12413,7 +12413,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { if (Flags.headlessDeviceOwnerSingleUserEnabled()) { // Block this method if the device is in headless main user mode Preconditions.checkCallAuthorization( - getHeadlessDeviceOwnerModeForDeviceOwner() + !mInjector.userManagerIsHeadlessSystemUserMode() + || getHeadlessDeviceOwnerModeForDeviceOwner() != HEADLESS_DEVICE_OWNER_MODE_SINGLE_USER, "createAndManageUser was called while in headless single user mode"); } @@ -23472,10 +23473,12 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } private boolean hasAdminPolicy(int adminPolicy, String callerPackageName) { - CallerIdentity caller = getCallerIdentity(callerPackageName); - ActiveAdmin deviceAdmin = getActiveAdminWithPolicyForUidLocked( - null, adminPolicy, caller.getUid()); - return deviceAdmin != null; + synchronized (getLockObject()) { + CallerIdentity caller = getCallerIdentity(callerPackageName); + ActiveAdmin deviceAdmin = getActiveAdminWithPolicyForUidLocked( + null, adminPolicy, caller.getUid()); + return deviceAdmin != null; + } } /** |