diff options
| -rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 0080d9edb0cb..7e1fe4810390 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -3079,8 +3079,11 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { long ident = Binder.clearCallingIdentity(); try { if ((flags & WIPE_RESET_PROTECTION_DATA) != 0) { + boolean ownsInitialization = isDeviceInitializer(admin.info.getPackageName()) + && !hasUserSetupCompleted(userHandle); if (userHandle != UserHandle.USER_OWNER - || !isDeviceOwner(admin.info.getPackageName())) { + || !(isDeviceOwner(admin.info.getPackageName()) + || ownsInitialization)) { throw new SecurityException( "Only device owner admins can set WIPE_RESET_PROTECTION_DATA"); } |