changeset: 100602:60f01a8a71ef branch: 3.5 parent: 100595:d5beb4978832 user: Berker Peksag date: Sat Mar 19 09:04:59 2016 +0200 files: Lib/test/test_wsgiref.py Lib/wsgiref/handlers.py Misc/NEWS description: Issue #26560: Avoid potential ValueError in BaseHandler.start_response Initial patch by Peter Inglesby. diff -r d5beb4978832 -r 60f01a8a71ef Lib/test/test_wsgiref.py --- a/Lib/test/test_wsgiref.py Fri Mar 18 13:23:58 2016 -0700 +++ b/Lib/test/test_wsgiref.py Sat Mar 19 09:04:59 2016 +0200 @@ -166,6 +166,27 @@ " be of type list: " ) + def test_status_validation_errors(self): + def create_bad_app(status): + def bad_app(environ, start_response): + start_response(status, [("Content-Type", "text/plain; charset=utf-8")]) + return [b"Hello, world!"] + return bad_app + + tests = [ + ('200', 'AssertionError: Status must be at least 4 characters'), + ('20X OK', 'AssertionError: Status message must begin w/3-digit code'), + ('200OK', 'AssertionError: Status message must have a space after code'), + ] + + for status, exc_message in tests: + with self.subTest(status=status): + out, err = run_amock(create_bad_app(status)) + self.assertTrue(out.endswith( + b"A server error occurred. Please contact the administrator." + )) + self.assertEqual(err.splitlines()[-2], exc_message) + def test_wsgi_input(self): def bad_app(e,s): e["wsgi.input"].read() diff -r d5beb4978832 -r 60f01a8a71ef Lib/wsgiref/handlers.py --- a/Lib/wsgiref/handlers.py Fri Mar 18 13:23:58 2016 -0700 +++ b/Lib/wsgiref/handlers.py Sat Mar 19 09:04:59 2016 +0200 @@ -226,7 +226,7 @@ self.headers = self.headers_class(headers) status = self._convert_string_type(status, "Status") assert len(status)>=4,"Status must be at least 4 characters" - assert int(status[:3]),"Status message must begin w/3-digit code" + assert status[:3].isdigit(), "Status message must begin w/3-digit code" assert status[3]==" ", "Status message must have a space after code" if __debug__: diff -r d5beb4978832 -r 60f01a8a71ef Misc/NEWS --- a/Misc/NEWS Fri Mar 18 13:23:58 2016 -0700 +++ b/Misc/NEWS Sat Mar 19 09:04:59 2016 +0200 @@ -91,6 +91,9 @@ Library ------- +- Issue #26560: Avoid potential ValueError in BaseHandler.start_response. + Initial patch by Peter Inglesby. + - Issue #26313: ssl.py _load_windows_store_certs fails if windows cert store is empty. Patch by Baji.