From 517260ecef739af58c49f8cf5b44b744e70be40d Mon Sep 17 00:00:00 2001 From: Pavel Grafov Date: Wed, 9 May 2018 17:19:04 +0100 Subject: [PATCH] Acquire lock before calling getDeviceOwnerAdminLocked Change-Id: I318c7cea8e9b7de2dc9fa05f786524848c9c76dd Fixes: 79418618 Test: atest CtsDevicePolicyManagerTestCases:com.android.cts.devicepolicy.DeviceOwnerTest#testKeyManagement --- .../server/devicepolicy/DevicePolicyManagerService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index ab93a8a91fb95..6510053193f42 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -5525,9 +5525,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // If there is a profile owner, redirect to that; otherwise query the device owner. ComponentName aliasChooser = getProfileOwner(caller.getIdentifier()); if (aliasChooser == null && caller.isSystem()) { - ActiveAdmin deviceOwnerAdmin = getDeviceOwnerAdminLocked(); - if (deviceOwnerAdmin != null) { - aliasChooser = deviceOwnerAdmin.info.getComponent(); + synchronized (getLockObject()) { + final ActiveAdmin deviceOwnerAdmin = getDeviceOwnerAdminLocked(); + if (deviceOwnerAdmin != null) { + aliasChooser = deviceOwnerAdmin.info.getComponent(); + } } } if (aliasChooser == null) {