diff options
author | roger <rogerduran@gmail.com> | 2020-06-15 14:58:54 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-15 14:58:54 (GMT) |
commit | d8cf3514dd4682419a66f6e834bb384ee34afc95 (patch) | |
tree | ebd63ed920b856081da64cfd330e7d2e05fbc8b2 /Lib/test/test_cgi.py | |
parent | e2d47a0568c6da9229580829917fd6aa702133b3 (diff) | |
download | cpython-d8cf3514dd4682419a66f6e834bb384ee34afc95.zip cpython-d8cf3514dd4682419a66f6e834bb384ee34afc95.tar.gz cpython-d8cf3514dd4682419a66f6e834bb384ee34afc95.tar.bz2 |
bpo-34226: fix cgi.parse_multipart without content_length (GH-8530)
In Python 3.7 the behavior of parse_multipart changed requiring CONTENT-LENGTH
header, this fix remove this header as required and fix FieldStorage
read_lines_to_outerboundary, by not using limit when it's negative,
since by default it's -1 if not content-length and keeps substracting what
was read from the file object.
Also added a test case for this problem.
Diffstat (limited to 'Lib/test/test_cgi.py')
-rw-r--r-- | Lib/test/test_cgi.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Lib/test/test_cgi.py b/Lib/test/test_cgi.py index ab86771..101942d 100644 --- a/Lib/test/test_cgi.py +++ b/Lib/test/test_cgi.py @@ -128,6 +128,20 @@ class CgiTests(unittest.TestCase): 'file': [b'Testing 123.\n'], 'title': ['']} self.assertEqual(result, expected) + def test_parse_multipart_without_content_length(self): + POSTDATA = '''--JfISa01 +Content-Disposition: form-data; name="submit-name" + +just a string + +--JfISa01-- +''' + fp = BytesIO(POSTDATA.encode('latin1')) + env = {'boundary': 'JfISa01'.encode('latin1')} + result = cgi.parse_multipart(fp, env) + expected = {'submit-name': ['just a string\n']} + self.assertEqual(result, expected) + def test_parse_multipart_invalid_encoding(self): BOUNDARY = "JfISa01" POSTDATA = """--JfISa01 |