Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Unified Diff: components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java

Issue 2853653002: [Crash Reporting] Improve sanitization of multipart boundary lines. (Closed)
Patch Set: Add a comment explaining why the regex is alphanumdash Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploadCallable.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java
diff --git a/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java b/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java
index ec0845f62de2c774075f71db004c407308ca10f3..71380bedd57a9b647591e8dc99e4014a1265c242 100644
--- a/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java
+++ b/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java
@@ -38,8 +38,9 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
* minidumps correctly.
*/
public static class TestHttpURLConnection extends HttpURLConnection {
- private static final String EXPECTED_CONTENT_TYPE_VALUE =
+ static final String DEFAULT_EXPECTED_CONTENT_TYPE =
String.format(MinidumpUploadCallable.CONTENT_TYPE_TMPL, BOUNDARY);
+ private final String mExpectedContentType;
/**
* The value of the "Content-Type" property if the property has been set.
@@ -47,14 +48,19 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
private String mContentTypePropertyValue = "";
public TestHttpURLConnection(URL url) {
+ this(url, DEFAULT_EXPECTED_CONTENT_TYPE);
+ }
+
+ public TestHttpURLConnection(URL url, String contentType) {
super(url);
+ mExpectedContentType = contentType;
assertEquals(MinidumpUploadCallable.CRASH_URL_STRING, url.toString());
}
@Override
public void disconnect() {
// Check that the "Content-Type" property has been set and the property's value.
- assertEquals(EXPECTED_CONTENT_TYPE_VALUE, mContentTypePropertyValue);
+ assertEquals(mExpectedContentType, mContentTypePropertyValue);
}
@Override
@@ -99,10 +105,16 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
* minidumps correctly.
*/
public static class TestHttpURLConnectionFactory implements HttpURLConnectionFactory {
+ String mContentType;
+
+ public TestHttpURLConnectionFactory() {
+ mContentType = TestHttpURLConnection.DEFAULT_EXPECTED_CONTENT_TYPE;
+ }
+
@Override
public HttpURLConnection createHttpURLConnection(String url) {
try {
- return new TestHttpURLConnection(new URL(url));
+ return new TestHttpURLConnection(new URL(url), mContentType);
} catch (IOException e) {
return null;
}
@@ -402,6 +414,54 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
assertTrue(mExpectedFileAfterUpload.exists());
}
+ // This is a regression test for http://crbug.com/712420
+ @SmallTest
+ @Feature({"Android-AppBase"})
+ public void testCallWithInvalidMinidumpBoundary() throws Exception {
+ // Include an invalid character, '[', in the test string.
+ setUpMinidumpFile(mTestUpload, "--InvalidBoundaryWithSpecialCharacter--[");
+ CrashReportingPermissionManager testPermManager =
+ new MockCrashReportingPermissionManager() {
+ { mIsEnabledForTests = true; }
+ };
+ HttpURLConnectionFactory httpURLConnectionFactory = new TestHttpURLConnectionFactory() {
+ { mContentType = ""; }
+ };
+
+ MinidumpUploadCallable minidumpUploadCallable =
+ new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
+
+ assertEquals(
+ MinidumpUploadCallable.UPLOAD_FAILURE, minidumpUploadCallable.call().intValue());
+ assertFalse(mExpectedFileAfterUpload.exists());
+ }
+
+ @SmallTest
+ @Feature({"Android-AppBase"})
+ public void testCallWithValidMinidumpBoundary() throws Exception {
+ // Include all valid characters in the test string.
+ final String boundary = "--0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+ final String expectedContentType =
+ String.format(MinidumpUploadCallable.CONTENT_TYPE_TMPL, boundary);
+ CrashReportingPermissionManager testPermManager =
+ new MockCrashReportingPermissionManager() {
+ { mIsEnabledForTests = true; }
+ };
+ HttpURLConnectionFactory httpURLConnectionFactory = new TestHttpURLConnectionFactory() {
+ { mContentType = expectedContentType; }
+ };
+
+ setUpMinidumpFile(mTestUpload, boundary);
+
+ MinidumpUploadCallable minidumpUploadCallable =
+ new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
+
+ assertEquals(
+ MinidumpUploadCallable.UPLOAD_SUCCESS, minidumpUploadCallable.call().intValue());
+ assertTrue(mExpectedFileAfterUpload.exists());
+ assertValidUploadLogEntry();
+ }
+
@SmallTest
@Feature({"Android-AppBase"})
public void testReceivingErrorCodes() throws Exception {
« no previous file with comments | « components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploadCallable.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698