From 7805bdb7584c537dc048f754c8b74bd9f100980c Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Tue, 30 May 2023 14:39:01 -0700 Subject: [PATCH] [wm] fix npe when removing trusted task overlays Bug: 284898339 Test: add and remove game service overlay Change-Id: I4f76e1e59f5284ad393397deec12f2d6bef5b7bb --- .../android/server/wm/WindowManagerService.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 9c636ea0ae85c..2edccd0b0df80 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -8261,6 +8261,13 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void addTrustedTaskOverlay(int taskId, SurfaceControlViewHost.SurfacePackage overlay) { + if (overlay == null) { + throw new IllegalArgumentException("Invalid overlay passed in for task=" + taskId); + } else if (overlay.getSurfaceControl() == null + || !overlay.getSurfaceControl().isValid()) { + throw new IllegalArgumentException( + "Invalid overlay surfacecontrol passed in for task=" + taskId); + } synchronized (mGlobalLock) { final Task task = mRoot.getRootTask(taskId); if (task == null) { @@ -8273,6 +8280,13 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void removeTrustedTaskOverlay(int taskId, SurfaceControlViewHost.SurfacePackage overlay) { + if (overlay == null) { + throw new IllegalArgumentException("Invalid overlay passed in for task=" + taskId); + } else if (overlay.getSurfaceControl() == null + || !overlay.getSurfaceControl().isValid()) { + throw new IllegalArgumentException( + "Invalid overlay surfacecontrol passed in for task=" + taskId); + } synchronized (mGlobalLock) { final Task task = mRoot.getRootTask(taskId); if (task == null) {