diff options
| author | 2016-08-05 23:36:16 +0000 | |
|---|---|---|
| committer | 2016-08-05 23:36:16 +0000 | |
| commit | f0b9bd4f80cde7ac29049737d067707cad37e5c9 (patch) | |
| tree | de3421915e32ad97acf8997893adeb3d2b13b4e2 | |
| parent | ea578665005c496d36c33c5814a241cbd712128e (diff) | |
| parent | 58da13b6fae23bab6d7fc0660748425d856e5e61 (diff) | |
Not trying to remove admins already being removed am: 9704e409df am: 636cd41893
am: 58da13b6fa
Change-Id: I2da5ec521d940156dc6f06019a0b85cddece0ce5
| -rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 4ba423d28ecf..2478aff82a92 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -2093,8 +2093,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { void removeActiveAdminLocked(final ComponentName adminReceiver, final int userHandle) { final ActiveAdmin admin = getActiveAdminUncheckedLocked(adminReceiver, userHandle); - if (admin != null) { - getUserData(userHandle).mRemovingAdmins.add(adminReceiver); + DevicePolicyData policy = getUserData(userHandle); + if (admin != null && !policy.mRemovingAdmins.contains(adminReceiver)) { + policy.mRemovingAdmins.add(adminReceiver); sendAdminCommandLocked(admin, DeviceAdminReceiver.ACTION_DEVICE_ADMIN_DISABLED, new BroadcastReceiver() { @@ -5710,7 +5711,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } synchronized (this) { enforceCanSetDeviceOwnerLocked(userId); - if (getActiveAdminUncheckedLocked(admin, userId) == null) { + if (getActiveAdminUncheckedLocked(admin, userId) == null + || getUserData(userId).mRemovingAdmins.contains(admin)) { throw new IllegalArgumentException("Not active admin: " + admin); } @@ -5898,7 +5900,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { synchronized (this) { enforceCanSetProfileOwnerLocked(userHandle); - if (getActiveAdminUncheckedLocked(who, userHandle) == null) { + if (getActiveAdminUncheckedLocked(who, userHandle) == null + || getUserData(userHandle).mRemovingAdmins.contains(who)) { throw new IllegalArgumentException("Not active admin: " + who); } |