summaryrefslogtreecommitdiff
path: root/django/http/multipartparser.py
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2011-06-10 08:39:38 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2011-06-10 08:39:38 +0000
commit9e952be26f7d26a90b06a05d3948283943320b7a (patch)
treee89623d649669272b593db90d5b0df3abf1d6dcb /django/http/multipartparser.py
parent046ffa483ed63faae7b31e7e2cf618f88a3312ba (diff)
Fixed #16201 -- Ensure that requests with Content-Length=0 don't break the multipart parser. Thanks to albsen for the report and patch
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16353 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/http/multipartparser.py')
-rw-r--r--django/http/multipartparser.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/django/http/multipartparser.py b/django/http/multipartparser.py
index ae143f79ed..63203a4581 100644
--- a/django/http/multipartparser.py
+++ b/django/http/multipartparser.py
@@ -75,7 +75,7 @@ class MultiPartParser(object):
# For now set it to 0; we'll try again later on down.
content_length = 0
- if content_length <= 0:
+ if content_length < 0:
# This means we shouldn't continue...raise an error.
raise MultiPartParserError("Invalid content length: %r" % content_length)
@@ -105,6 +105,11 @@ class MultiPartParser(object):
encoding = self._encoding
handlers = self._upload_handlers
+ # HTTP spec says that Content-Length >= 0 is valid
+ # handling content-length == 0 before continuing
+ if self._content_length == 0:
+ return QueryDict(MultiValueDict(), encoding=self._encoding), MultiValueDict()
+
limited_input_data = LimitBytes(self._input_data, self._content_length)
# See if the handler will want to take care of the parsing.