File tree 2 files changed +10
-0
lines changed
2 files changed +10
-0
lines changed Original file line number Diff line number Diff line change 12
12
except ImportError :
13
13
from typing_extensions import Literal # type: ignore
14
14
15
+ try :
16
+ from sys import get_int_max_str_digits
17
+ except ImportError :
18
+ def get_int_max_str_digits ():
19
+ return 4300 # CPython default
20
+
15
21
16
22
# Facts
17
23
# -----
@@ -173,6 +179,8 @@ def normalize_and_validate(
173
179
raise LocalProtocolError ("conflicting Content-Length headers" )
174
180
value = lengths .pop ()
175
181
validate (_content_length_re , value , "bad Content-Length" )
182
+ if len (value ) > get_int_max_str_digits ():
183
+ raise LocalProtocolError ("bad Content-Length" )
176
184
if seen_content_length is None :
177
185
seen_content_length = value
178
186
new_headers .append ((raw_name , name , value ))
Original file line number Diff line number Diff line change @@ -74,6 +74,8 @@ def test_normalize_and_validate() -> None:
74
74
)
75
75
with pytest .raises (LocalProtocolError ):
76
76
normalize_and_validate ([("Content-Length" , "1 , 1,2" )])
77
+ with pytest .raises (LocalProtocolError ):
78
+ normalize_and_validate ([("Content-Length" , "1" * 4301 )])
77
79
78
80
# transfer-encoding
79
81
assert normalize_and_validate ([("Transfer-Encoding" , "chunked" )]) == [
You can’t perform that action at this time.
0 commit comments