diff options
| -rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 26 |
1 files changed, 13 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 70422bb8169a..26f02514455c 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -13982,7 +13982,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isProvisioningAllowed(String action, String packageName) { Objects.requireNonNull(packageName); - final CallerIdentity caller = getCallerIdentity(); final long ident = mInjector.binderClearCallingIdentity(); try { @@ -13994,21 +13993,21 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { mInjector.binderRestoreCallingIdentity(ident); } - return checkProvisioningPreconditionSkipPermission(action, packageName) == STATUS_OK; + return checkProvisioningPreconditionSkipPermission(action, packageName, caller.getUserId()) + == STATUS_OK; } @Override public int checkProvisioningPrecondition(String action, String packageName) { Objects.requireNonNull(packageName, "packageName is null"); - + final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization( hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); - return checkProvisioningPreconditionSkipPermission(action, packageName); + return checkProvisioningPreconditionSkipPermission(action, packageName, caller.getUserId()); } - private int checkProvisioningPreconditionSkipPermission(String action, - String packageName) { + String packageName, int userId) { if (!mHasFeature) { logMissingFeatureAction("Cannot check provisioning for action " + action); return STATUS_DEVICE_ADMIN_NOT_SUPPORTED; @@ -14016,7 +14015,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!isProvisioningAllowed()) { return STATUS_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS; } - final int code = checkProvisioningPreConditionSkipPermissionNoLog(action, packageName); + final int code = checkProvisioningPreConditionSkipPermissionNoLog( + action, packageName, userId); if (code != STATUS_OK) { Slogf.d(LOG_TAG, "checkProvisioningPreCondition(" + action + ", " + packageName + ") failed: " @@ -14043,15 +14043,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } private int checkProvisioningPreConditionSkipPermissionNoLog(String action, - String packageName) { - final int callingUserId = mInjector.userHandleGetCallingUserId(); + String packageName, int userId) { if (action != null) { switch (action) { case DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE: - return checkManagedProfileProvisioningPreCondition(packageName, callingUserId); + return checkManagedProfileProvisioningPreCondition(packageName, userId); case DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE: case DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE: - return checkDeviceOwnerProvisioningPreCondition(callingUserId); + return checkDeviceOwnerProvisioningPreCondition(userId); } } throw new IllegalArgumentException("Unknown provisioning action " + action); @@ -17622,7 +17621,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final long identity = Binder.clearCallingIdentity(); try { final int result = checkProvisioningPreconditionSkipPermission( - ACTION_PROVISION_MANAGED_PROFILE, admin.getPackageName()); + ACTION_PROVISION_MANAGED_PROFILE, admin.getPackageName(), caller.getUserId()); if (result != STATUS_OK) { throw new ServiceSpecificException( ERROR_PRE_CONDITION_FAILED, @@ -18032,7 +18031,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final long identity = Binder.clearCallingIdentity(); try { int result = checkProvisioningPreconditionSkipPermission( - ACTION_PROVISION_MANAGED_DEVICE, deviceAdmin.getPackageName()); + ACTION_PROVISION_MANAGED_DEVICE, deviceAdmin.getPackageName(), + caller.getUserId()); if (result != STATUS_OK) { throw new ServiceSpecificException( ERROR_PRE_CONDITION_FAILED, |