From e84dc8715e91d51364ba6bda2b2fb07e7a8b750e Mon Sep 17 00:00:00 2001 From: sammiee5311 Date: Mon, 16 Feb 2026 12:21:03 +0900 Subject: Fixed #36931 -- Handled LookupError in multipart parser for invalid RFC 2231 encoding. Added LookupError to the except clause so invalid headers are silently skipped, consistent with other malformed header handling. --- tests/requests_tests/tests.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'tests') diff --git a/tests/requests_tests/tests.py b/tests/requests_tests/tests.py index e52989b0da..e1744bf180 100644 --- a/tests/requests_tests/tests.py +++ b/tests/requests_tests/tests.py @@ -455,11 +455,18 @@ class RequestsTests(SimpleTestCase): request.body def test_malformed_multipart_header(self): - for header in [ - 'Content-Disposition : form-data; name="name"', - 'Content-Disposition:form-data; name="name"', - 'Content-Disposition :form-data; name="name"', - ]: + tests = [ + ('Content-Disposition : form-data; name="name"', {"name": ["value"]}), + ('Content-Disposition:form-data; name="name"', {"name": ["value"]}), + ('Content-Disposition :form-data; name="name"', {"name": ["value"]}), + # The invalid encoding causes the entire part to be skipped. + ( + 'Content-Disposition: form-data; name="name"; ' + "filename*=BOGUS''test%20file.txt", + {}, + ), + ] + for header, expected_post in tests: with self.subTest(header): payload = FakePayload( "\r\n".join( @@ -480,7 +487,7 @@ class RequestsTests(SimpleTestCase): "wsgi.input": payload, } ) - self.assertEqual(request.POST, {"name": ["value"]}) + self.assertEqual(request.POST, expected_post) def test_body_after_POST_multipart_related(self): """ -- cgit v1.3