From 2fe8e54695ed038dadbb90e03140a1ab395d6629 Mon Sep 17 00:00:00 2001 From: Bert JW Regeer Date: Sun, 2 Feb 2020 15:10:35 -0800 Subject: Add header parsing tests with short headers While fixing the catastrophic backtracking a gap in tests led to a potentially bad regex being considered that would have caused issues with short header values. This now adds a test to make sure we don't regress. --- waitress/tests/test_parser.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/waitress/tests/test_parser.py b/waitress/tests/test_parser.py index 71703e2..b425131 100644 --- a/waitress/tests/test_parser.py +++ b/waitress/tests/test_parser.py @@ -433,6 +433,17 @@ class TestHTTPRequestParser(unittest.TestCase): self.assertIn("FOO", self.parser.headers) self.assertEqual(self.parser.headers["FOO"], "abrowser/0.001 (C O M M E N T)") + def test_parse_header_short_values(self): + from waitress.parser import ParsingError + + data = b"GET /foobar HTTP/1.1\r\none: 1\r\ntwo: 22\r\n" + self.parser.parse_header(data) + + self.assertIn("ONE", self.parser.headers) + self.assertIn("TWO", self.parser.headers) + self.assertEqual(self.parser.headers["ONE"], "1") + self.assertEqual(self.parser.headers["TWO"], "22") + class Test_split_uri(unittest.TestCase): def _callFUT(self, uri): -- cgit v1.2.1