summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Rosky <erosky@google.com>2022-07-28 10:33:21 -0700
committerEvan Rosky <erosky@google.com>2022-08-02 20:37:50 +0000
commit0b3ad39abf059b3e6e3088ab9d3ac6c43c29a2d5 (patch)
tree9ad552c58cb411df0b717ccef967f29531f650c6
parent2bbb7a41380766db7920b4be0dbc0b98fb7a0036 (diff)
downloadbase-0b3ad39abf059b3e6e3088ab9d3ac6c43c29a2d5.tar.gz
Strip transition information from activityoptions once it is read.
The implementation of shared-element transitions takes the ActivityOptions from the calling activity and sends them to another activity. This means that any sensitive information passed into ActivityManager via ActivityOptions can make its way to an unrelated app. Recently a RemoteTransition object was added which includes some sensitive information. This CL strips the sensitive information from the activity options after it is extracted so that it can't be sent to the target. Bug: 237290578 Test: atest ActivityManagerTest#testActivityManager_stripTransitionFromActivityOptions Change-Id: Ic9f8062e67ab895292af75e97a9ce2f4aa45d467
-rw-r--r--core/java/android/app/ActivityOptions.java5
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java3
2 files changed, 8 insertions, 0 deletions
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index 0ff9f6655b8a..e76f89ce9461 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -1353,6 +1353,11 @@ public class ActivityOptions {
}
/** @hide */
+ public void setRemoteTransition(@Nullable RemoteTransition remoteTransition) {
+ mRemoteTransition = remoteTransition;
+ }
+
+ /** @hide */
public static ActivityOptions fromBundle(Bundle bOptions) {
return bOptions != null ? new ActivityOptions(bOptions) : null;
}
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 0e6d1c69005d..b68c6df34888 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -4426,6 +4426,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
mPendingRemoteAnimation = options.getRemoteAnimationAdapter();
}
mPendingRemoteTransition = options.getRemoteTransition();
+ // Since options gets sent to client apps, remove transition information from it.
+ options.setRemoteTransition(null);
+ options.setRemoteAnimationAdapter(null);
}
void applyOptionsAnimation() {