[2/2] trafficserver git commit: TS-4063: Add regression tests for HPACK Huffman
TS-4063: Add regression tests for HPACK Huffman This closes #372 Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/d5307c6d Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/d5307c6d Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/d5307c6d Branch: refs/heads/master Commit: d5307c6d5b7d1414550f4d618e69a4161d1f147e Parents: 9894fb1 c98b51f Author: Masakazu KitajoAuthored: Thu Dec 10 10:02:45 2015 +0900 Committer: Masaori Koshiba Committed: Thu Dec 10 10:08:10 2015 +0900 -- proxy/http2/RegressionHPACK.cc | 84 +++-- 1 file changed, 72 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d5307c6d/proxy/http2/RegressionHPACK.cc -- diff --cc proxy/http2/RegressionHPACK.cc index f4e8da8,c1021d0..5ceebc8 --- a/proxy/http2/RegressionHPACK.cc +++ b/proxy/http2/RegressionHPACK.cc @@@ -110,19 -110,60 +110,65 @@@ const static struct {(char *)"password", (char *) "secret", 0, HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x10\x08" "password\x06" "secret", -17}}; +17}, + // with Huffman Coding - {(char *)"custom-key", (char *) "custom-header", 0, HPACK_FIELD_INDEXED_LITERAL, (uint8_t *) "\x40" - "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f" - "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9", ++ {(char *)"custom-key", (char *) "custom-header", 0, HPACK_FIELD_INDEXED_LITERAL, ++ (uint8_t *) "\x40" ++ "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f" ++ "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9", +20}, - {(char *)"custom-key", (char *) "custom-header", 0, HPACK_FIELD_NOINDEX_LITERAL, (uint8_t *) "\x00" - "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f" - "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9", ++ {(char *)"custom-key", (char *) "custom-header", 0, HPACK_FIELD_NOINDEX_LITERAL, ++ (uint8_t *) "\x00" ++ "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f" ++ "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9", +20}, - {(char *)"custom-key", (char *) "custom-header", 0, HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x10" - "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f" - "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9", ++ {(char *)"custom-key", (char *) "custom-header", 0, HPACK_FIELD_NEVERINDEX_LITERAL, ++ (uint8_t *) "\x10" ++ "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f" ++ "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9", +20}, + {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_INDEXED_LITERAL, (uint8_t *) "\x44" + "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff", +11}, + {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_NOINDEX_LITERAL, (uint8_t *) "\x04" + "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff", +11}, - {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x14" - "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff", ++ {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_NEVERINDEX_LITERAL, ++ (uint8_t *) "\x14" ++ "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff", +11}, + {(char *)"password", (char *) "secret", 0, HPACK_FIELD_INDEXED_LITERAL, (uint8_t *) "\x40" + "\x86\xac\x68\x47\x83\xd9\x27" + "\x84\x41\x49\x61\x53", +13}, + {(char *)"password", (char *) "secret", 0, HPACK_FIELD_NOINDEX_LITERAL, (uint8_t *) "\x00" + "\x86\xac\x68\x47\x83\xd9\x27" +
[1/2] trafficserver git commit: TS-4063: Add regression tests for HPACK Huffman
Repository: trafficserver Updated Branches: refs/heads/master 9894fb1e4 -> d5307c6d5 TS-4063: Add regression tests for HPACK Huffman Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/c98b51f9 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/c98b51f9 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/c98b51f9 Branch: refs/heads/master Commit: c98b51f9985dfd678e80fa5cd484c53534cc2de9 Parents: 3ba9af9 Author: Masakazu KitajoAuthored: Wed Dec 9 16:42:42 2015 +0900 Committer: Masakazu Kitajo Committed: Wed Dec 9 16:42:42 2015 +0900 -- proxy/http2/RegressionHPACK.cc | 68 + 1 file changed, 62 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/c98b51f9/proxy/http2/RegressionHPACK.cc -- diff --git a/proxy/http2/RegressionHPACK.cc b/proxy/http2/RegressionHPACK.cc index f4e8da8..c1021d0 100644 --- a/proxy/http2/RegressionHPACK.cc +++ b/proxy/http2/RegressionHPACK.cc @@ -110,9 +110,44 @@ const static struct { {(char *)"password", (char *) "secret", 0, HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x10\x08" "password\x06" "secret", - 17}}; + 17}, + // with Huffman Coding + {(char *)"custom-key", (char *) "custom-header", 0, HPACK_FIELD_INDEXED_LITERAL, (uint8_t *) "\x40" + "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f" + "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9", + 20}, + {(char *)"custom-key", (char *) "custom-header", 0, HPACK_FIELD_NOINDEX_LITERAL, (uint8_t *) "\x00" + "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f" + "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9", + 20}, + {(char *)"custom-key", (char *) "custom-header", 0, HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x10" + "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f" + "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9", + 20}, + {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_INDEXED_LITERAL, (uint8_t *) "\x44" + "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff", + 11}, + {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_NOINDEX_LITERAL, (uint8_t *) "\x04" + "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff", + 11}, + {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x14" + "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff", + 11}, + {(char *)"password", (char *) "secret", 0, HPACK_FIELD_INDEXED_LITERAL, (uint8_t *) "\x40" + "\x86\xac\x68\x47\x83\xd9\x27" + "\x84\x41\x49\x61\x53", + 13}, + {(char *)"password", (char *) "secret", 0, HPACK_FIELD_NOINDEX_LITERAL, (uint8_t *) "\x00" + "\x86\xac\x68\x47\x83\xd9\x27" + "\x84\x41\x49\x61\x53", + 13}, + {(char *)"password", (char *) "secret", 0, HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x10" + "\x86\xac\x68\x47\x83\xd9\x27" + "\x84\x41\x49\x61\x53", + 13}}; // [RFC 7541] C.3. Request Examples without Huffman Coding - C.3.1. First Request +// [RFC 7541] C.4. Request Examples with Huffman Coding - C.4.1. First Request const static struct { char *raw_name; char *raw_value; @@ -122,6 +157,12 @@ const static struct { {(char *)":path", (char *) "/"}, {(char *)":authority", (char *)
[2/2] trafficserver git commit: TS-4062: CID 1341763: Free data when error
TS-4062: CID 1341763: Free data when error This closes #370 Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/88c35d77 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/88c35d77 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/88c35d77 Branch: refs/heads/master Commit: 88c35d77a8897325f0cecfc4c844938bbffa6035 Parents: a68d583 Author: Masaori KoshibaAuthored: Wed Dec 9 11:29:20 2015 +0900 Committer: Masaori Koshiba Committed: Thu Dec 10 10:35:23 2015 +0900 -- proxy/http2/HPACK.cc | 16 ++-- 1 file changed, 14 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/88c35d77/proxy/http2/HPACK.cc -- diff --git a/proxy/http2/HPACK.cc b/proxy/http2/HPACK.cc index 7e4b2fc..51b9a2f 100644 --- a/proxy/http2/HPACK.cc +++ b/proxy/http2/HPACK.cc @@ -347,14 +347,26 @@ encode_string(uint8_t *buf_start, const uint8_t *buf_end, const char *value, siz // Length const int64_t len = encode_integer(p, buf_end, data_len, 7); - if (len == -1) + if (len == -1) { +if (use_huffman) { + ats_free(data); +} + return -1; + } + if (use_huffman) { *p |= 0x80; } p += len; - if (buf_end < p || buf_end - p < data_len) + + if (buf_end < p || buf_end - p < data_len) { +if (use_huffman) { + ats_free(data); +} + return -1; + } // Value memcpy(p, data, data_len);