You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.8 KiB
78 lines
2.8 KiB
1 year ago
|
From 82003049b2b8053d74504c4e6b3e14528a8b38ff Mon Sep 17 00:00:00 2001
|
||
|
From: Renata Ravanelli <renata.ravanelli@gmail.com>
|
||
|
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 <bertjw@regeer.org>
|
||
|
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 <renata.ravanelli@gmail.com>
|
||
|
---
|
||
|
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)
|
||
|
|