From 02124666e250e9217ca0ec44d028d4755ff97ddc Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Tue, 18 Apr 2023 18:56:20 -0700 Subject: [PATCH] Pass in the correct binder token when calling AMS.finishReceiver(). Bug: 278795140 Test: atest services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java Test: atest services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java Change-Id: I51e2933411e15b9dd78cae2b4ad7234b96dc9122 --- core/java/android/app/LoadedApk.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index bf695311e89eb..b5efb73225d67 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -1668,10 +1668,13 @@ public final class LoadedApk { static final class ReceiverDispatcher { final static class InnerReceiver extends IIntentReceiver.Stub { + final IApplicationThread mApplicationThread; final WeakReference mDispatcher; final LoadedApk.ReceiverDispatcher mStrongRef; - InnerReceiver(LoadedApk.ReceiverDispatcher rd, boolean strong) { + InnerReceiver(IApplicationThread thread, LoadedApk.ReceiverDispatcher rd, + boolean strong) { + mApplicationThread = thread; mDispatcher = new WeakReference(rd); mStrongRef = strong ? rd : null; } @@ -1718,7 +1721,8 @@ public final class LoadedApk { if (extras != null) { extras.setAllowFds(false); } - mgr.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); + mgr.finishReceiver(mApplicationThread.asBinder(), resultCode, data, + extras, false, intent.getFlags()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1825,7 +1829,7 @@ public final class LoadedApk { } mAppThread = appThread; - mIIntentReceiver = new InnerReceiver(this, !registered); + mIIntentReceiver = new InnerReceiver(mAppThread, this, !registered); mReceiver = receiver; mContext = context; mActivityThread = activityThread;