Issue #26717: Stop encoding Latin-1-ized WSGI paths with UTF-8
Patch by Anthony Sottile.
This commit is contained in:
parent
06172e7bd4
commit
50dd1f7dd6
|
@ -1,3 +1,4 @@
|
||||||
|
from unittest import mock
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
from wsgiref.util import setup_testing_defaults
|
from wsgiref.util import setup_testing_defaults
|
||||||
from wsgiref.headers import Headers
|
from wsgiref.headers import Headers
|
||||||
|
@ -221,6 +222,29 @@ class IntegrationTests(TestCase):
|
||||||
b"data",
|
b"data",
|
||||||
out)
|
out)
|
||||||
|
|
||||||
|
def test_cp1252_url(self):
|
||||||
|
def app(e, s):
|
||||||
|
s("200 OK", [
|
||||||
|
("Content-Type", "text/plain"),
|
||||||
|
("Date", "Wed, 24 Dec 2008 13:29:32 GMT"),
|
||||||
|
])
|
||||||
|
# PEP3333 says environ variables are decoded as latin1.
|
||||||
|
# Encode as latin1 to get original bytes
|
||||||
|
return [e["PATH_INFO"].encode("latin1")]
|
||||||
|
|
||||||
|
out, err = run_amock(
|
||||||
|
validator(app), data=b"GET /\x80%80 HTTP/1.0")
|
||||||
|
self.assertEqual(
|
||||||
|
[
|
||||||
|
b"HTTP/1.0 200 OK",
|
||||||
|
mock.ANY,
|
||||||
|
b"Content-Type: text/plain",
|
||||||
|
b"Date: Wed, 24 Dec 2008 13:29:32 GMT",
|
||||||
|
b"",
|
||||||
|
b"/\x80\x80",
|
||||||
|
],
|
||||||
|
out.splitlines())
|
||||||
|
|
||||||
|
|
||||||
class UtilityTests(TestCase):
|
class UtilityTests(TestCase):
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@ class WSGIRequestHandler(BaseHTTPRequestHandler):
|
||||||
else:
|
else:
|
||||||
path,query = self.path,''
|
path,query = self.path,''
|
||||||
|
|
||||||
env['PATH_INFO'] = urllib.parse.unquote_to_bytes(path).decode('iso-8859-1')
|
env['PATH_INFO'] = urllib.parse.unquote(path, 'iso-8859-1')
|
||||||
env['QUERY_STRING'] = query
|
env['QUERY_STRING'] = query
|
||||||
|
|
||||||
host = self.address_string()
|
host = self.address_string()
|
||||||
|
|
|
@ -1376,6 +1376,7 @@ Nir Soffer
|
||||||
Paul Sokolovsky
|
Paul Sokolovsky
|
||||||
Evgeny Sologubov
|
Evgeny Sologubov
|
||||||
Cody Somerville
|
Cody Somerville
|
||||||
|
Anthony Sottile
|
||||||
Edoardo Spadolini
|
Edoardo Spadolini
|
||||||
Geoffrey Spear
|
Geoffrey Spear
|
||||||
Clay Spence
|
Clay Spence
|
||||||
|
|
|
@ -107,6 +107,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by
|
||||||
|
Anthony Sottile.
|
||||||
|
|
||||||
- Issue #26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading
|
- Issue #26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading
|
||||||
more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of
|
more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of
|
||||||
1024 bytes per call.
|
1024 bytes per call.
|
||||||
|
|
Loading…
Reference in New Issue