From ae2a24196fb2b8785d057a2669a92329e2344f2f Mon Sep 17 00:00:00 2001 From: Charlie Wang Date: Wed, 25 Jan 2023 10:28:32 -0800 Subject: [PATCH] Fix NPE in AmbientContextManagerService. Bug: 266371615 Test: None Change-Id: I3d9a6628f98427536aa14ed37e09b9823b928aae --- .../AmbientContextManagerService.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java b/services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java index 7d9b272906c66..a9a77bf28ebec 100644 --- a/services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java +++ b/services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java @@ -593,16 +593,19 @@ public class AmbientContextManagerService extends Manifest.permission.ACCESS_AMBIENT_CONTEXT_EVENT, TAG); assertCalledByPackageOwner(callingPackage); - for (ClientRequest cr : mExistingClientRequests) { - if (cr.getPackageName().equals(callingPackage)) { - AmbientContextManagerPerUserService service = - getAmbientContextManagerPerUserServiceForEventTypes( - UserHandle.getCallingUserId(), cr.getRequest().getEventTypes()); - if (service != null) { - service.onUnregisterObserver(callingPackage); - } else { - Slog.w(TAG, "onUnregisterObserver unavailable user_id: " - + UserHandle.getCallingUserId()); + synchronized (mLock) { + for (ClientRequest cr : mExistingClientRequests) { + if (cr.getPackageName().equals(callingPackage)) { + AmbientContextManagerPerUserService service = + getAmbientContextManagerPerUserServiceForEventTypes( + UserHandle.getCallingUserId(), + cr.getRequest().getEventTypes()); + if (service != null) { + service.onUnregisterObserver(callingPackage); + } else { + Slog.w(TAG, "onUnregisterObserver unavailable user_id: " + + UserHandle.getCallingUserId()); + } } } }