mirror of
https://github.com/django/django.git
synced 2025-08-03 10:34:04 +00:00
Fixed #26971 -- Prevented crash with non-UTF-8 incoming PATH_INFO
Thanks Tim Graham and Loïc Bistuer for the reviews.
This commit is contained in:
parent
384f89f8f8
commit
48c34f3336
4 changed files with 26 additions and 38 deletions
|
@ -173,8 +173,8 @@ class RequestsTests(SimpleTestCase):
|
|||
self.assertEqual(repr(request), str_prefix("<WSGIRequest: GET '/somepath/'>"))
|
||||
|
||||
def test_wsgirequest_path_info(self):
|
||||
def wsgi_str(path_info):
|
||||
path_info = path_info.encode('utf-8') # Actual URL sent by the browser (bytestring)
|
||||
def wsgi_str(path_info, encoding='utf-8'):
|
||||
path_info = path_info.encode(encoding) # Actual URL sent by the browser (bytestring)
|
||||
if six.PY3:
|
||||
path_info = path_info.decode('iso-8859-1') # Value in the WSGI environ dict (native string)
|
||||
return path_info
|
||||
|
@ -182,6 +182,16 @@ class RequestsTests(SimpleTestCase):
|
|||
request = WSGIRequest({'PATH_INFO': wsgi_str("/سلام/"), 'REQUEST_METHOD': 'get', 'wsgi.input': BytesIO(b'')})
|
||||
self.assertEqual(request.path, "/سلام/")
|
||||
|
||||
# The URL may be incorrectly encoded in a non-UTF-8 encoding (#26971)
|
||||
request = WSGIRequest({
|
||||
'PATH_INFO': wsgi_str("/café/", encoding='iso-8859-1'),
|
||||
'REQUEST_METHOD': 'get',
|
||||
'wsgi.input': BytesIO(b''),
|
||||
})
|
||||
# Since it's impossible to decide the (wrong) encoding of the URL, it's
|
||||
# left percent-encoded in the path.
|
||||
self.assertEqual(request.path, "/caf%E9/")
|
||||
|
||||
def test_httprequest_location(self):
|
||||
request = HttpRequest()
|
||||
self.assertEqual(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue