Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9650671 authored by Winson Chung's avatar Winson Chung
Browse files

Check SurfaceControl state while holding the WM lock

- If removeTrustedTaskOverlay() is somehow called twice with the same
  overlay, then it may pass the initial SC check before falling into
  removing the same overlay from the host

Fixes: 296744713
Test: Verify with game dashboard overlay

Change-Id: I1fdd405c692e9e1d1f2bbee1a687c9ef15ef45e8
parent bc26339b
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -8407,12 +8407,13 @@ public class WindowManagerService extends IWindowManager.Stub
                SurfaceControlViewHost.SurfacePackage overlay) {
            if (overlay == null) {
                throw new IllegalArgumentException("Invalid overlay passed in for task=" + taskId);
            } else if (overlay.getSurfaceControl() == null
            }
            synchronized (mGlobalLock) {
                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) {
                    throw new IllegalArgumentException("no task with taskId" + taskId);