From bbdc0eb818eb26d5da0ec2ae6cf724332550e9a9 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Thu, 27 Dec 2018 17:58:29 +0100 Subject: fix ContentLengthMiddleware(..., maxstore=()) on Py3k On Python 2.x, any integer sorts below the empty tuple. That was exploited in the maxstore parameter, but fails on Python 3 with a TypeError. Also add a regression test. Reported-by: Dominik Brodowski --- test.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'test.py') diff --git a/test.py b/test.py index 6aef5bf..bbb11b9 100755 --- a/test.py +++ b/test.py @@ -276,14 +276,15 @@ class StupidIO(object): return self.content[oldpos:self.position] class ContentLengthMiddlewareTest(unittest.TestCase): - def setUp(self): + def customSetUp(self, maxstore=10): self.staticapp = applications.StaticFile(StupidIO(b"success"), "200 Found", [("Content-Type", "text/plain")]) self.app = middlewares.ContentLengthMiddleware(self.staticapp, - maxstore=10) + maxstore=maxstore) self.req = Request(self) def testWithout(self): + self.customSetUp() res = self.req(self.staticapp) res.status("200 Found") try: @@ -293,6 +294,13 @@ class ContentLengthMiddlewareTest(unittest.TestCase): pass def testGet(self): + self.customSetUp() + res = self.req(self.app) + res.status("200 Found") + res.header("Content-length", "7") + + def testInfiniteMaxstore(self): + self.customSetUp(maxstore=()) res = self.req(self.app) res.status("200 Found") res.header("Content-length", "7") -- cgit v1.2.3