Issue #22419: Limit the length of incoming HTTP request in wsgiref server to 65536 bytes.
This commit is contained in:
parent
2a42a0bff3
commit
e025b52db0
|
@ -118,6 +118,11 @@ class IntegrationTests(TestCase):
|
|||
out, err = run_amock()
|
||||
self.check_hello(out)
|
||||
|
||||
def test_request_length(self):
|
||||
out, err = run_amock(data=b"GET " + (b"x" * 65537) + b" HTTP/1.0\n\n")
|
||||
self.assertEqual(out.splitlines()[0],
|
||||
b"HTTP/1.0 414 Request-URI Too Long")
|
||||
|
||||
def test_validated_hello(self):
|
||||
out, err = run_amock(validator(hello_app))
|
||||
# the middleware doesn't support len(), so content-length isn't there
|
||||
|
|
|
@ -115,7 +115,14 @@ class WSGIRequestHandler(BaseHTTPRequestHandler):
|
|||
def handle(self):
|
||||
"""Handle a single HTTP request"""
|
||||
|
||||
self.raw_requestline = self.rfile.readline()
|
||||
self.raw_requestline = self.rfile.readline(65537)
|
||||
if len(self.raw_requestline) > 65536:
|
||||
self.requestline = ''
|
||||
self.request_version = ''
|
||||
self.command = ''
|
||||
self.send_error(414)
|
||||
return
|
||||
|
||||
if not self.parse_request(): # An error code has been sent, just exit
|
||||
return
|
||||
|
||||
|
|
|
@ -251,6 +251,7 @@ Denver Coneybeare
|
|||
Phil Connell
|
||||
Juan José Conti
|
||||
Matt Conway
|
||||
Devin Cook
|
||||
David M. Cooke
|
||||
Jason R. Coombs
|
||||
Garrett Cooper
|
||||
|
|
|
@ -13,6 +13,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #22419: Limit the length of incoming HTTP request in wsgiref server to
|
||||
65536 bytes and send a 414 error code for higher lengths. Patch contributed
|
||||
by Devin Cook.
|
||||
|
||||
- Lax cookie parsing in http.cookies could be a security issue when combined
|
||||
with non-standard cookie handling in some Web browsers. Reported by
|
||||
Sergey Bobrov.
|
||||
|
|
Loading…
Reference in New Issue