From 8c460d52417e764fc21362087b9314dbc09039bd Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 24 Feb 2008 00:14:24 +0000 Subject: #1627: httplib now ignores negative Content-Length headers. --- Lib/httplib.py | 3 +++ Lib/test/test_httplib.py | 7 +++++++ Misc/NEWS | 2 ++ 3 files changed, 12 insertions(+) diff --git a/Lib/httplib.py b/Lib/httplib.py index bb4b59e..5696467 100644 --- a/Lib/httplib.py +++ b/Lib/httplib.py @@ -438,6 +438,9 @@ class HTTPResponse: self.length = int(length) except ValueError: self.length = None + else: + if self.length < 0: # ignore nonsensical negative lengths + self.length = None else: self.length = None diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index e9dd9d6..67719fd 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -184,6 +184,13 @@ class BasicTest(TestCase): finally: resp.close() + def test_negative_content_length(self): + sock = FakeSocket('HTTP/1.1 200 OK\r\nContent-Length: -1\r\n\r\nHello\r\n') + resp = httplib.HTTPResponse(sock, method="GET") + resp.begin() + self.assertEquals(resp.read(), 'Hello\r\n') + resp.close() + class OfflineTest(TestCase): def test_responses(self): diff --git a/Misc/NEWS b/Misc/NEWS index 9d9264e..38b4730 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -441,6 +441,8 @@ Core and builtins Library ------- +- #1627: httplib now ignores negative Content-Length headers. + - #900744: If an invalid chunked-encoding header is sent by a server, httplib will now raise IncompleteRead and close the connection instead of raising ValueError. -- cgit v0.12