Skip to content

Commit d5a636f

Browse files
Chris Liaoleary
Chris Li
authored andcommitted
Pass SafeActivityOptions with actual caller for startActivityInTF
We clearCallingUid before apply the WCT, but SafeActivityOptions will query the Binder Uid when construct. Update to pass in the actual caller. Flag: EXEMPT bug fix Bug: 369103643 Test: atest WmTests:WindowOrganizerTests# testStartActivityInTaskFragment_checkCallerPermission (cherry picked from commit 20c568e77eae5d469cd5e594b644d8645d830dbd) (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:6c76c394194d40d2704126181313d0a640979606) Merged-In: I873ae576de0bc4a7402c2f522b45853bce48a0c5 Change-Id: I873ae576de0bc4a7402c2f522b45853bce48a0c5
1 parent 033ef2e commit d5a636f

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

services/core/java/com/android/server/wm/ActivityStartController.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import android.content.pm.PackageManager;
4343
import android.content.pm.ResolveInfo;
4444
import android.os.Binder;
45-
import android.os.Bundle;
4645
import android.os.IBinder;
4746
import android.os.UserHandle;
4847
import android.provider.Settings;
@@ -527,14 +526,14 @@ int startActivities(IApplicationThread caller, int callingUid, int incomingRealC
527526
* Starts an activity in the TaskFragment.
528527
* @param taskFragment TaskFragment {@link TaskFragment} to start the activity in.
529528
* @param activityIntent intent to start the activity.
530-
* @param activityOptions ActivityOptions to start the activity with.
529+
* @param activityOptions SafeActivityOptions to start the activity with.
531530
* @param resultTo the caller activity
532531
* @param callingUid the caller uid
533532
* @param callingPid the caller pid
534533
* @return the start result.
535534
*/
536535
int startActivityInTaskFragment(@NonNull TaskFragment taskFragment,
537-
@NonNull Intent activityIntent, @Nullable Bundle activityOptions,
536+
@NonNull Intent activityIntent, @Nullable SafeActivityOptions activityOptions,
538537
@Nullable IBinder resultTo, int callingUid, int callingPid,
539538
@Nullable IBinder errorCallbackToken) {
540539
final ActivityRecord caller =

services/core/java/com/android/server/wm/WindowOrganizerController.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -919,8 +919,10 @@ taskFragment, type, new IllegalStateException(
919919
}
920920
final Intent activityIntent = hop.getActivityIntent();
921921
final Bundle activityOptions = hop.getLaunchOptions();
922+
final SafeActivityOptions safeOptions =
923+
SafeActivityOptions.fromBundle(activityOptions, caller.mPid, caller.mUid);
922924
final int result = mService.getActivityStartController()
923-
.startActivityInTaskFragment(tf, activityIntent, activityOptions,
925+
.startActivityInTaskFragment(tf, activityIntent, safeOptions,
924926
hop.getCallingActivity(), caller.mUid, caller.mPid,
925927
errorCallbackToken);
926928
if (!isStartResultSuccessful(result)) {

0 commit comments

Comments
 (0)