diff options
author | Tobias Thierer <tobiast@google.com> | 2016-09-12 12:22:47 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-09-12 12:22:47 +0000 |
commit | 867f0e5f35a8fc355206693ddefbf55ae04b9caa (patch) | |
tree | aee1888414fc424a40588309b33470cd983fc5c8 | |
parent | ff44cb1068ace81835dfb7862048ded259c4f09a (diff) | |
parent | f38272f18fcdafd9c2cc9cd35d1165e5d527152d (diff) | |
download | okhttp-nougat-mr2.1-release.tar.gz |
Apply upstream commit: Allow HTAB in header values.android-7.1.2_r9android-7.1.2_r8android-7.1.2_r6android-7.1.2_r5android-7.1.2_r4android-7.1.2_r39android-7.1.2_r38android-7.1.2_r37android-7.1.2_r36android-7.1.2_r33android-7.1.2_r32android-7.1.2_r30android-7.1.2_r3android-7.1.2_r29android-7.1.2_r28android-7.1.2_r27android-7.1.2_r25android-7.1.2_r24android-7.1.2_r23android-7.1.2_r2android-7.1.2_r19android-7.1.2_r18android-7.1.2_r17android-7.1.2_r16android-7.1.2_r15android-7.1.2_r14android-7.1.2_r13android-7.1.2_r12android-7.1.2_r11android-7.1.2_r10android-7.1.2_r1nougat-mr2.3-releasenougat-mr2.2-releasenougat-mr2.1-releasenougat-mr2-security-releasenougat-mr2-releasenougat-mr2-pixel-release
am: f38272f18f
Change-Id: If9e97433baf032d56737c394605d19a8c7c1e9c2
3 files changed, 14 insertions, 3 deletions
diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java index 47c6010..3b31cc8 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java @@ -174,6 +174,16 @@ public final class RequestTest { } } + @Test public void headerAllowsTabOnlyInValues() throws Exception { + Request.Builder builder = new Request.Builder(); + builder.header("key", "sample\tvalue"); + try { + builder.header("sample\tkey", "value"); + fail(); + } catch (IllegalArgumentException expected) { + } + } + @Test public void headerForbidsControlCharacters() throws Exception { assertForbiddenHeader(null); assertForbiddenHeader("\u0000"); @@ -185,7 +195,6 @@ public final class RequestTest { assertForbiddenHeader("a\rb"); assertForbiddenHeader("\rb"); // End of Android modification. - assertForbiddenHeader("\t"); assertForbiddenHeader("\u001f"); assertForbiddenHeader("\u007f"); diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java index 1f5ad6d..e4938c1 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java @@ -155,10 +155,12 @@ public final class HeadersTest { .add("foo: bar") .add(" foo: baz") // Name leading whitespace is trimmed. .add("foo : bak") // Name trailing whitespace is trimmed. + .add("\tkey\t:\tvalue\t") // '\t' also counts as whitespace .add("ping: pong ") // Value whitespace is trimmed. .add("kit:kat") // Space after colon is not required. .build(); assertEquals(Arrays.asList("bar", "baz", "bak"), headers.values("foo")); + assertEquals(Arrays.asList("value"), headers.values("key")); assertEquals(Arrays.asList("pong"), headers.values("ping")); assertEquals(Arrays.asList("kat"), headers.values("kit")); } diff --git a/okhttp/src/main/java/com/squareup/okhttp/Headers.java b/okhttp/src/main/java/com/squareup/okhttp/Headers.java index d5b4cef..9e92555 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/Headers.java +++ b/okhttp/src/main/java/com/squareup/okhttp/Headers.java @@ -307,8 +307,8 @@ public final class Headers { // ANDROID-BEGIN // http://b/28867041 - keep things working for apps that rely on Android's (out of spec) // UTF-8 header encoding behavior. - // if (c <= '\u001f' || c >= '\u007f') { - if (c <= '\u001f' || c == '\u007f') { + // if ((c <= '\u001f' && c != '\u0009' /* htab */) || c >= '\u007f') { + if ((c <= '\u001f' && c != '\u0009' /* htab */) || c == '\u007f') { // ANDROID-END throw new IllegalArgumentException(String.format( "Unexpected char %#04x at %d in header value: %s", (int) c, i, value)); |