diff options
| author | 2016-08-05 23:17:47 +0000 | |
|---|---|---|
| committer | 2016-08-05 23:17:47 +0000 | |
| commit | 636cd41893394e20393d32139e9d36d0e2757eda (patch) | |
| tree | a2fc2baa541dc2a84f639676da9b69f1ed21178d | |
| parent | 4a5d23596afe03d7ae3e7501cd32afa5d7eca8a2 (diff) | |
| parent | 9704e409dfe1c1fc582d98837f2a315886a1cd61 (diff) | |
Not trying to remove admins already being removed
am: 9704e409df
Change-Id: I79141f4a94ddb10a7124c7fcd6dfeb14337553d8
| -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 feeed8b922da..e828650a3049 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() { @@ -5706,7 +5707,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); } @@ -5894,7 +5896,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); } |