From 489b25e7e94cd15ea1867ae73ba3bc75bce76428 Mon Sep 17 00:00:00 2001 From: Fiona Campbell Date: Thu, 9 Sep 2021 17:10:52 +0000 Subject: [PATCH] Fix NPE when passing displayId through handler NPE was thrown when calling getPendingFrameRateOverrideUids. This is because the LogicalDisplay array could change before the message is handled. This fix ensures that the logical display is valid before continuing with the method. Bug: 198359227 Bug: 198159201 Bug: 199027886 Test: Verify it doesn't crash Change-Id: I11adf67478d7a6f81512aa3cd4bc568056dfa80a --- .../java/com/android/server/display/DisplayManagerService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 73bcea6de115f..827523be0d3ab 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2252,6 +2252,9 @@ public final class DisplayManagerService extends SystemService { int displayId = msg.arg1; final LogicalDisplay display = mLogicalDisplayMapper.getDisplayLocked(displayId); + if (display == null) { + break; + } uids = display.getPendingFrameRateOverrideUids(); display.clearPendingFrameRateOverrideUids(); }