summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2008-02-24 00:14:24 (GMT)
committerGeorg Brandl <georg@python.org>2008-02-24 00:14:24 (GMT)
commit8c460d52417e764fc21362087b9314dbc09039bd (patch)
treed2b4cf3f5bfed14bcbc5a04b52b8b0ad79364449 /Lib
parent2363503074a3f1c2dbe934bed0c865d326e34c1a (diff)
downloadcpython-8c460d52417e764fc21362087b9314dbc09039bd.zip
cpython-8c460d52417e764fc21362087b9314dbc09039bd.tar.gz
cpython-8c460d52417e764fc21362087b9314dbc09039bd.tar.bz2
#1627: httplib now ignores negative Content-Length headers.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/httplib.py3
-rw-r--r--Lib/test/test_httplib.py7
2 files changed, 10 insertions, 0 deletions
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):