From 599d43b4fe43f48f7398f7052b8b2d4e88cbcf14 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Fri, 24 Jun 2016 13:46:18 -0700 Subject: [PATCH] Prevent NPE in dispatchUserSwitch Access to mCurWaitingUserSwitchCallbacks should be synchronized and it's safer to access the local variable curWaitingUserSwitchCallbacks Bug: 29039588 Change-Id: Id91699670ca16467d385f476ba06da2cb29a984b --- services/core/java/com/android/server/am/UserController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 152d34d10525..6b44f14883e5 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -1061,7 +1061,9 @@ final class UserController { try { // Prepend with unique prefix to guarantee that keys are unique final String name = "#" + i + " " + mUserSwitchObservers.getBroadcastCookie(i); - mCurWaitingUserSwitchCallbacks.add(name); + synchronized (mService) { + curWaitingUserSwitchCallbacks.add(name); + } final IRemoteCallback callback = new IRemoteCallback.Stub() { @Override public void sendResult(Bundle data) throws RemoteException { -- 2.11.0