@@ -195,21 +195,24 @@ def test_header_continuation_long(self):
195195 with self .assertParseError ("Maximum segment header length exceeded" ):
196196 self .parse (b"\t moooooooooooooooooooooooooore value\r \n " )
197197
198- def test_header_bad_name (self ):
199- self .reset ()
198+ def test_header_no_colon (self ):
200199 with self .assertParseError ("Malformed segment header" ):
201200 self .parse (b"--boundary\r \n no-colon\r \n \r \n data\r \n --boundary--" )
202- self .reset ()
203- with self .assertParseError ("Malformed segment header" ):
201+
202+ def test_header_empty_name (self ):
203+ with self .assertParseError ("Invalid segment header name" ):
204204 self .parse (b"--boundary\r \n :empty-name\r \n \r \n data\r \n --boundary--" )
205+
206+ def test_header_bad_name (self ):
205207 for badchar in (b" " , b"\0 " , b"\r " , b"\n " , "ö" .encode ("utf8" )):
206208 self .reset ()
207209 with self .assertParseError ("Invalid segment header name" ):
208210 self .parse (
209211 b"--boundary\r \n invalid%sname:value\r \n \r \n data\r \n --boundary--"
210212 % badchar
211213 )
212- self .reset ()
214+
215+ def test_header_bad_unicode (self ):
213216 with self .assertParseError ("Segment header failed to decode" ):
214217 self .parse (
215218 b"--boundary\r \n invalid\xc3 \x28 :value\r \n \r \n data\r \n --boundary--"
@@ -312,7 +315,17 @@ def test_segment_clen_bad_value(self):
312315 self .parse ("x" * 4 )
313316 self .parse ("\r \n --boundary--" )
314317
315- def test_content_length_limit (self ):
318+ def test_segment_clen_repeated (self ):
319+ self .parse ("--boundary\r \n " )
320+ self .parse ("Content-Disposition: form-data; name=foo\r \n " )
321+ with self .assertParseError ("Multiple segment Content-Length headers" ):
322+ self .parse (f"Content-Length: 1024\r \n " )
323+ self .parse (f"Content-Length: 1024\r \n " )
324+ self .parse ("\r \n " )
325+ self .parse ("x" * 1024 )
326+ self .parse ("\r \n --boundary--" )
327+
328+ def test_segment_clen_limit (self ):
316329 self .reset (max_segment_size = 1024 )
317330 self .parse ("--boundary\r \n " )
318331 self .parse ("Content-Disposition: form-data; name=foo\r \n " )
0 commit comments