From c185ae1c297c36b80ff99895298cde28511bf007 Mon Sep 17 00:00:00 2001 From: Lee Shombert Date: Mon, 24 Oct 2022 08:09:47 -0700 Subject: [PATCH] Fix a crash during mock testing Bug: 249161784 This fixes a crash during mock testing of the broadcast queue when BOOT_COMPLETED broadcasts are simulated. The umInternal variable is null, and umInternal.getUserInfo() throws a null pointer exception. The change avoids dereferencing umInternal if it is null. This was tested with a draft version of the broadcast replay code; it was verified that BOOT_COMPLETED did not generate an NPE. Test: atest * FrameworksMockingServicesTests:BroadcastQueueTest Change-Id: I31f57f1dcb7f2ed9f02558f841e18958e8097373 --- .../core/java/com/android/server/am/BroadcastQueueImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/BroadcastQueueImpl.java b/services/core/java/com/android/server/am/BroadcastQueueImpl.java index f34565b2ee9c2..ffc54d90aec6e 100644 --- a/services/core/java/com/android/server/am/BroadcastQueueImpl.java +++ b/services/core/java/com/android/server/am/BroadcastQueueImpl.java @@ -1488,7 +1488,8 @@ public class BroadcastQueueImpl extends BroadcastQueue { // LocalServices.getService() here. final UserManagerInternal umInternal = LocalServices.getService( UserManagerInternal.class); - final UserInfo userInfo = umInternal.getUserInfo(r.userId); + final UserInfo userInfo = + (umInternal != null) ? umInternal.getUserInfo(r.userId) : null; if (userInfo != null) { userType = UserManager.getUserTypeForStatsd(userInfo.userType); }