Refs #30227 -- Added helpful message for non-ASCII Content-Type in mulitpart request.
This commit is contained in:
parent
2ed2acf872
commit
8ec7ded370
|
@ -67,7 +67,10 @@ class MultiPartParser:
|
||||||
raise MultiPartParserError('Invalid Content-Type: %s' % content_type)
|
raise MultiPartParserError('Invalid Content-Type: %s' % content_type)
|
||||||
|
|
||||||
# Parse the header to get the boundary to split the parts.
|
# Parse the header to get the boundary to split the parts.
|
||||||
ctypes, opts = parse_header(content_type.encode('ascii'))
|
try:
|
||||||
|
ctypes, opts = parse_header(content_type.encode('ascii'))
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
raise MultiPartParserError('Invalid non-ASCII Content-Type in multipart: %s' % force_str(content_type))
|
||||||
boundary = opts.get('boundary')
|
boundary = opts.get('boundary')
|
||||||
if not boundary or not cgi.valid_boundary(boundary):
|
if not boundary or not cgi.valid_boundary(boundary):
|
||||||
raise MultiPartParserError('Invalid boundary in multipart: %s' % force_str(boundary))
|
raise MultiPartParserError('Invalid boundary in multipart: %s' % force_str(boundary))
|
||||||
|
|
|
@ -487,6 +487,17 @@ class RequestsTests(SimpleTestCase):
|
||||||
with self.assertRaisesMessage(MultiPartParserError, 'Invalid boundary in multipart: None'):
|
with self.assertRaisesMessage(MultiPartParserError, 'Invalid boundary in multipart: None'):
|
||||||
request.POST
|
request.POST
|
||||||
|
|
||||||
|
def test_multipart_non_ascii_content_type(self):
|
||||||
|
request = WSGIRequest({
|
||||||
|
'REQUEST_METHOD': 'POST',
|
||||||
|
'CONTENT_TYPE': 'multipart/form-data; boundary = \xe0',
|
||||||
|
'CONTENT_LENGTH': 0,
|
||||||
|
'wsgi.input': FakePayload(),
|
||||||
|
})
|
||||||
|
msg = 'Invalid non-ASCII Content-Type in multipart: multipart/form-data; boundary = à'
|
||||||
|
with self.assertRaisesMessage(MultiPartParserError, msg):
|
||||||
|
request.POST
|
||||||
|
|
||||||
def test_POST_connection_error(self):
|
def test_POST_connection_error(self):
|
||||||
"""
|
"""
|
||||||
If wsgi.input.read() raises an exception while trying to read() the
|
If wsgi.input.read() raises an exception while trying to read() the
|
||||||
|
|
Loading…
Reference in New Issue