From 82003049b2b8053d74504c4e6b3e14528a8b38ff Mon Sep 17 00:00:00 2001 From: Renata Ravanelli Date: Fri, 15 Sep 2023 12:32:19 -0300 Subject: [PATCH 3/6] This patch is a backport of commit 884bed1 From: Bert JW Regeer Date: Sat, 12 Mar 2022 18:35:01 -0700 Subject: [PATCH] Update tests to remove invalid chunked encoding chunk-size RFC7230 states the following: chunk = chunk-size [ chunk-ext ] CRLF chunk-data CRLF chunk-size = 1*HEXDIG Where chunk-ext is: chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-val ] ) Only if there is a chunk-ext should there be a `;` after the 1*HEXDIG. And a chunk-ext that is empty is invalid. Backport: * Patch refresh - no functional change. Signed-off-by: Renata Ravanelli --- tests/test_functional.py | 6 +++--- tests/test_parser.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_functional.py b/tests/test_functional.py index e894497..7a54b22 100644 --- a/tests/test_functional.py +++ b/tests/test_functional.py @@ -302,7 +302,7 @@ class EchoTests(object): self.assertFalse("transfer-encoding" in headers) def test_chunking_request_with_content(self): - control_line = b"20;\r\n" # 20 hex = 32 dec + control_line = b"20\r\n" # 20 hex = 32 dec s = b"This string has 32 characters.\r\n" expected = s * 12 header = tobytes("GET / HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n") @@ -321,7 +321,7 @@ class EchoTests(object): self.assertFalse("transfer-encoding" in headers) def test_broken_chunked_encoding(self): - control_line = "20;\r\n" # 20 hex = 32 dec + control_line = "20\r\n" # 20 hex = 32 dec s = "This string has 32 characters.\r\n" to_send = "GET / HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n" to_send += control_line + s + "\r\n" @@ -346,7 +346,7 @@ class EchoTests(object): self.assertRaises(ConnectionClosed, read_http, fp) def test_broken_chunked_encoding_missing_chunk_end(self): - control_line = "20;\r\n" # 20 hex = 32 dec + control_line = "20\r\n" # 20 hex = 32 dec s = "This string has 32 characters.\r\n" to_send = "GET / HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n" to_send += control_line + s diff --git a/tests/test_parser.py b/tests/test_parser.py index eabf353..420f280 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -152,7 +152,7 @@ class TestHTTPRequestParser(unittest.TestCase): b"Transfer-Encoding: chunked\r\n" b"X-Foo: 1\r\n" b"\r\n" - b"1d;\r\n" + b"1d\r\n" b"This string has 29 characters\r\n" b"0\r\n\r\n" ) -- 2.39.2 (Apple Git-143)