diff options
| author | 2022-08-02 03:33:39 +0000 | |
|---|---|---|
| committer | 2022-08-11 02:03:07 +0000 | |
| commit | 834812c423f10deb95953d41a7007d4cba78f1ec (patch) | |
| tree | 70da73fbb54137cd77333d918efa784b71acbfb8 | |
| parent | ea3ccf17fe6f68601f17d5e8ce05b081063f71c7 (diff) | |
[RESTRICT AUTOMERGE] Do not send new Intent to non-exported activity when navigateUpTo
The new Intent was delivered to a non-exported activity while
#navigateUpTo was called from an Activity of a different uid.
Bug: 238605611
Test: atest StartActivityTests
Change-Id: I854dd825bfd9a2c08851980d480d1f3a177af6cf
Merged-In: I854dd825bfd9a2c08851980d480d1f3a177af6cf
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityStack.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index e14f70d97de4..c8de81ba383f 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -2407,7 +2407,23 @@ class ActivityStack extends Task { parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TASK || parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TOP || (destIntentFlags & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) { - parent.deliverNewIntentLocked(callingUid, destIntent, destGrants, srec.packageName); + boolean abort; + try { + abort = !mStackSupervisor.checkStartAnyActivityPermission(destIntent, + parent.info, null /* resultWho */, -1 /* requestCode */, srec.getPid(), + callingUid, srec.info.packageName, null /* callingFeatureId */, + false /* ignoreTargetSecurity */, false /* launchingInTask */, srec.app, + null /* resultRecord */, null /* resultRootTask */); + } catch (SecurityException e) { + abort = true; + } + if (abort) { + android.util.EventLog.writeEvent(0x534e4554, "238605611", callingUid, ""); + foundParentInTask = false; + } else { + parent.deliverNewIntentLocked(callingUid, destIntent, destGrants, + srec.packageName); + } } else { try { ActivityInfo aInfo = AppGlobals.getPackageManager().getActivityInfo( |