mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	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.
(cherry picked from commit d8cf3514dd)
Co-authored-by: roger <rogerduran@gmail.com>
			
			
This commit is contained in:
		
							parent
							
								
									bab0833d49
								
							
						
					
					
						commit
						b87453f94f
					
				
					 3 changed files with 21 additions and 2 deletions
				
			
		|  | @ -128,6 +128,20 @@ def test_parse_multipart(self): | |||
|                     '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 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Miss Islington (bot)
						Miss Islington (bot)