@@ -248,6 +248,25 @@ def test_fieldstorage_multipart(self):
248248 got = getattr (fs .list [x ], k )
249249 self .assertEqual (got , exp )
250250
251+ def test_fieldstorage_multipart_leading_whitespace (self ):
252+ env = {
253+ 'REQUEST_METHOD' : 'POST' ,
254+ 'CONTENT_TYPE' : 'multipart/form-data; boundary={}' .format (BOUNDARY ),
255+ 'CONTENT_LENGTH' : '560' }
256+ # Add some leading whitespace to our post data that will cause the
257+ # first line to not be the innerboundary.
258+ fp = BytesIO (b"\r \n " + POSTDATA .encode ('latin-1' ))
259+ fs = cgi .FieldStorage (fp , environ = env , encoding = "latin-1" )
260+ self .assertEqual (len (fs .list ), 4 )
261+ expect = [{'name' :'id' , 'filename' :None , 'value' :'1234' },
262+ {'name' :'title' , 'filename' :None , 'value' :'' },
263+ {'name' :'file' , 'filename' :'test.txt' , 'value' :b'Testing 123.\n ' },
264+ {'name' :'submit' , 'filename' :None , 'value' :' Add ' }]
265+ for x in range (len (fs .list )):
266+ for k , exp in expect [x ].items ():
267+ got = getattr (fs .list [x ], k )
268+ self .assertEqual (got , exp )
269+
251270 def test_fieldstorage_multipart_non_ascii (self ):
252271 #Test basic FieldStorage multipart parsing
253272 env = {'REQUEST_METHOD' :'POST' ,
0 commit comments