diff options
author | Evan Rosky <erosky@google.com> | 2022-08-03 11:48:33 -0700 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-08-16 01:21:23 +0000 |
commit | d971fd460021865208b7714042516597cd63c4a4 (patch) | |
tree | b706520f944c7abd56b20e0c5ab1df58e529e357 | |
parent | 89e46e2e31eee53248bcf91dbb9a87a5ddd8de19 (diff) | |
download | base-d971fd460021865208b7714042516597cd63c4a4.tar.gz |
Strip transition information from activityoptions when sent to app
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 before sending it to anonther app.
Bug: 237290578
Test: atest ActivityManagerTest#testActivityManager_stripTransitionFromActivityOptions
Change-Id: Ifa08fc195698f02bf70ca386178c67f6ba4a14ea
(cherry picked from commit 0d03e6f1fc66fefb5409ac93ff49fa922f81664c)
Merged-In: Ifa08fc195698f02bf70ca386178c67f6ba4a14ea
-rw-r--r-- | core/java/android/app/ActivityOptions.java | 5 | ||||
-rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index d6441a2b629b..4e426720ab03 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -1442,6 +1442,11 @@ public class ActivityOptions extends ComponentOptions { } /** @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 4f222a4f8b83..026e5d286630 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4884,8 +4884,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A ActivityOptions takeOptions() { if (DEBUG_TRANSITION) Slog.i(TAG, "Taking options for " + this + " callers=" + Debug.getCallers(6)); + if (mPendingOptions == null) return null; final ActivityOptions opts = mPendingOptions; mPendingOptions = null; + // Strip sensitive information from options before sending it to app. + opts.setRemoteTransition(null); + opts.setRemoteAnimationAdapter(null); return opts; } |