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

Commit f87ea83f authored by chaviw's avatar chaviw
Browse files

Clear calling identity when requesting syncInputTransaction

The syncInputTransaction can trigger a performSurfacePlacement which
could result in a callback to the client. In that case, the calling PID
will be incorrect since we didn't clear the calling identity before
requesting the performSurfacePlacement.

Bug: 154665556
Test: Hard to reproduce. Existing tests pass
Change-Id: Id7c35d356cfc435e2de225e4e0d3979751c5c7d4
Merged-In: Id7c35d356cfc435e2de225e4e0d3979751c5c7d4
parent 1def7eb6
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -7717,6 +7717,8 @@ public class WindowManagerService extends IWindowManager.Stub

    @Override
    public void syncInputTransactions() {
        long token = Binder.clearCallingIdentity();
        try {
            waitForAnimationsToComplete();

            synchronized (mGlobalLock) {
@@ -7725,6 +7727,9 @@ public class WindowManagerService extends IWindowManager.Stub
                    displayContent.getInputMonitor().updateInputWindowsImmediately());
            }
            new SurfaceControl.Transaction().syncInputWindows().apply(true);
        } finally {
            Binder.restoreCallingIdentity(token);
        }
    }

    private void waitForAnimationsToComplete() {