diff options
author | Android Build Merger (Role) <noreply-android-build-merger@google.com> | 2019-05-22 21:38:02 +0000 |
---|---|---|
committer | Android Build Merger (Role) <noreply-android-build-merger@google.com> | 2019-05-22 21:38:02 +0000 |
commit | 30a7c1118cdcebd27902ef76f8facc379a4484d6 (patch) | |
tree | 72469ff5e2cc4803f97b54f07a10e54b52973228 | |
parent | 247473a238323b1b54c0d4cd376227bb694e4ccd (diff) | |
parent | 33587b4e1dd2850e30c35aee0e195a0cae492b68 (diff) | |
download | Email-30a7c1118cdcebd27902ef76f8facc379a4484d6.tar.gz |
[automerger] AOSP/Email - bug fix: do not allow composing message with hidden private data attachments. am: e81f6f92bb am: 2f17f9f018 am: 34534259de am: 33587b4e1d
Change-Id: I5329b9144603c3e53bf8cebb75530e31d56c7e20
-rw-r--r-- | src/com/android/email/activity/ComposeActivityEmailExternal.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/com/android/email/activity/ComposeActivityEmailExternal.java b/src/com/android/email/activity/ComposeActivityEmailExternal.java index 455193bea..a5cbe9d3a 100644 --- a/src/com/android/email/activity/ComposeActivityEmailExternal.java +++ b/src/com/android/email/activity/ComposeActivityEmailExternal.java @@ -16,11 +16,21 @@ package com.android.email.activity; +import android.content.Intent; +import android.os.Bundle; +import com.android.mail.compose.ComposeActivity; + /** * A subclass of {@link ComposeActivityEmail} which is exported for other Android packages to open. */ public class ComposeActivityEmailExternal extends ComposeActivityEmail { + @Override + protected void onCreate(Bundle savedInstanceState) { + sanitizeIntent(); + super.onCreate(savedInstanceState); + } + /** * Only relevant when WebView Compose is enabled. Change this when WebView * Compose is enabled for Email. @@ -29,4 +39,30 @@ public class ComposeActivityEmailExternal extends ComposeActivityEmail { public boolean isExternal() { return false; } + + /** + * Overrides the value of {@code #getIntent()} so any future callers will get a sanitized version + * of the intent. + */ + // See b/114493057 for context. + private void sanitizeIntent() { + Intent sanitizedIntent = getIntent(); + if (sanitizedIntent != null) { + Bundle originalExtras = sanitizedIntent.getExtras(); + sanitizedIntent.replaceExtras(new Bundle()); + copyStringExtraIfExists(ComposeActivity.EXTRA_SUBJECT, originalExtras, sanitizedIntent); + copyStringExtraIfExists(ComposeActivity.EXTRA_TO, originalExtras, sanitizedIntent); + copyStringExtraIfExists(ComposeActivity.EXTRA_CC, originalExtras, sanitizedIntent); + copyStringExtraIfExists(ComposeActivity.EXTRA_BCC, originalExtras, sanitizedIntent); + copyStringExtraIfExists(ComposeActivity.EXTRA_BODY, originalExtras, sanitizedIntent); + setIntent(sanitizedIntent); + } + } + + private void copyStringExtraIfExists( + String extraKey, Bundle originalExtras, Intent sanitizedIntent) { + if (originalExtras.containsKey(extraKey)) { + sanitizedIntent.putExtra(extraKey, originalExtras.getString(extraKey)); + } + } } |