mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
108 lines
4.1 KiB
Diff
108 lines
4.1 KiB
Diff
|
From f291cb8c6b1e0c8554f4407e9b1e9be27e74058e Mon Sep 17 00:00:00 2001
|
||
|
From: Raman Tenneti <rtenneti@google.com>
|
||
|
Date: Mon, 13 May 2019 13:29:40 -0700
|
||
|
Subject: [PATCH] AOSP/Email - bug fix: do not allow composing message with
|
||
|
hidden private data attachments.
|
||
|
|
||
|
Ported/merged thefollowing from CL
|
||
|
https://critique.corp.google.com/#review/247540041
|
||
|
|
||
|
original file:
|
||
|
java/com/google/android/apps/gmail/unifiedgmail/src/com/google/android/gm/ComposeActivityGmailExternal.java
|
||
|
|
||
|
aosp's version:
|
||
|
src/com/android/email/activity/ComposeActivityEmailExternal.java
|
||
|
|
||
|
Change description from the above CL:
|
||
|
"Switch intent filtering to be whitelist based rather than blacklist based.
|
||
|
|
||
|
ComposeActivityGmailExternal should whitelist what extras we allow in.
|
||
|
This is a very belated follow up to cl/235253805 where I wrote a quick fix
|
||
|
as a blacklist based solution."
|
||
|
|
||
|
Bug: 127320867
|
||
|
|
||
|
Test: manual - Ran the following tests on Pixel phone. Tested the email UI.
|
||
|
|
||
|
$ make -j 40
|
||
|
-rw-r--r-- 1 rtenneti primarygroup 6375626 May 5 19:49 out/target/product/marlin/system/product/app/Email/Email.apk
|
||
|
|
||
|
$ make UnifiedEmailTests -j
|
||
|
-rw-r--r-- 1 rtenneti primarygroup 311703 May 5 20:04 out/target/product/marlin/testcases/UnifiedEmailTests/arm64/UnifiedEmailTests.apk
|
||
|
|
||
|
$ make EmailTests -j
|
||
|
-rw-r--r-- 1 rtenneti primarygroup 365023 May 13 14:39 out/target/product/marlin/testcases/EmailTests/arm64/EmailTests.apk
|
||
|
|
||
|
$ adb install -r out/target/product/marlin/system/product/app/Email/Email.apk
|
||
|
$ adb install -r out/target/product/marlin/testcases/EmailTests/arm64/EmailTests.apk
|
||
|
$ adb install -r out/target/product/marlin/testcases/UnifiedEmailTests/arm64/UnifiedEmailTests.apk
|
||
|
|
||
|
$ adb shell am instrument -w com.android.mail.emailtests
|
||
|
Time: 3.519
|
||
|
OK (157 tests)
|
||
|
|
||
|
Change-Id: I5f6541ceb79a1a1c598d0c8207e3cab98d1a8ac5
|
||
|
Merged-In: I5f6541ceb79a1a1c598d0c8207e3cab98d1a8ac5
|
||
|
(cherry picked from commit e81f6f92bbdd43f34aa25fc2b7605aeb887af2cc)
|
||
|
---
|
||
|
.../ComposeActivityEmailExternal.java | 36 +++++++++++++++++++
|
||
|
1 file changed, 36 insertions(+)
|
||
|
|
||
|
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 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));
|
||
|
+ }
|
||
|
+ }
|
||
|
}
|