Kaydet (Commit) 2ed2acf8 authored tarafından Tim Graham's avatar Tim Graham

Fixed #30227 -- Fixed crash on request without boundary in Content-Type.

üst 8a2ec55b
......@@ -70,7 +70,7 @@ class MultiPartParser:
ctypes, opts = parse_header(content_type.encode('ascii'))
boundary = opts.get('boundary')
if not boundary or not cgi.valid_boundary(boundary):
raise MultiPartParserError('Invalid boundary in multipart: %s' % boundary.decode())
raise MultiPartParserError('Invalid boundary in multipart: %s' % force_str(boundary))
# Content-Length should contain the length of the body we are about
# to receive.
......
......@@ -5,6 +5,7 @@ from urllib.parse import urlencode
from django.core.exceptions import DisallowedHost
from django.core.handlers.wsgi import LimitedStream, WSGIRequest
from django.http import HttpRequest, RawPostDataException, UnreadablePostError
from django.http.multipartparser import MultiPartParserError
from django.http.request import HttpHeaders, split_domain_port
from django.test import RequestFactory, SimpleTestCase, override_settings
from django.test.client import FakePayload
......@@ -476,6 +477,16 @@ class RequestsTests(SimpleTestCase):
})
self.assertFalse(request.POST._mutable)
def test_multipart_without_boundary(self):
request = WSGIRequest({
'REQUEST_METHOD': 'POST',
'CONTENT_TYPE': 'multipart/form-data;',
'CONTENT_LENGTH': 0,
'wsgi.input': FakePayload(),
})
with self.assertRaisesMessage(MultiPartParserError, 'Invalid boundary in multipart: None'):
request.POST
def test_POST_connection_error(self):
"""
If wsgi.input.read() raises an exception while trying to read() the
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment