summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
author Jeff Chang <chengjeff@google.com> 2022-09-14 16:10:04 +0800
committer Jeff Chang <chengjeff@google.com> 2022-09-14 16:10:42 +0800
commit7da08c6bd31584744e91eb6b3914166344ecae33 (patch)
tree6124e24479989b306593e2c9029cb085241c16d5 /services
parentf8f07e22f1ba2b3c19a22a4c69aeb7953a36c4b6 (diff)
[RESTRICT AUTOMERGE] Allow activity to be reparent while allowTaskReparenting is applied
Any malicious application could hijack tasks by android:allowTaskReparenting. This vulnerability can perform UI spoofing or spying on user’s activities. This CL only allows activities to be reparent while android:allowTaskReparenting is applied and the affinity of activity is same with the target task. Bug: 240663194 Test: atest IntentTests Change-Id: I73abb9ec05af95bc14f887ae825a9ada9600f771
Diffstat (limited to 'services')
-rw-r--r--services/core/java/com/android/server/wm/ResetTargetTaskHelper.java3
1 files changed, 2 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java b/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java
index 32de699eaae9..bf206a3a6bff 100644
--- a/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java
+++ b/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java
@@ -148,15 +148,16 @@ class ResetTargetTaskHelper {
return false;
} else {
- mResultActivities.add(r);
if (r.resultTo != null) {
// If this activity is sending a reply to a previous activity, we can't do
// anything with it now until we reach the start of the reply chain.
// NOTE: that we are assuming the result is always to the previous activity,
// which is almost always the case but we really shouldn't count on.
+ mResultActivities.add(r);
return false;
} else if (mTargetTaskFound && allowTaskReparenting && mTargetTask.affinity != null
&& mTargetTask.affinity.equals(r.taskAffinity)) {
+ mResultActivities.add(r);
// This activity has an affinity for our task. Either remove it if we are
// clearing or move it over to our task. Note that we currently punt on the case
// where we are resetting a task that is not at the top but who has activities