summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1998-10-20 14:43:02 (GMT)
committerGuido van Rossum <guido@python.org>1998-10-20 14:43:02 (GMT)
commitf5745008d2c78d3830e62cbd4e8f223fe69977c5 (patch)
tree58bd650fe54dce81a2ba4e2a11a0685c11bc1102 /Lib
parentfbddddee49713f2141cfd0b17aa92ee8d16eca4a (diff)
downloadcpython-f5745008d2c78d3830e62cbd4e8f223fe69977c5.zip
cpython-f5745008d2c78d3830e62cbd4e8f223fe69977c5.tar.gz
cpython-f5745008d2c78d3830e62cbd4e8f223fe69977c5.tar.bz2
Patch by Jim Fulton, who writes:
""" The FieldStorage constructor calls the read_multi method. The read_multi method creates new FieldStorage objects, re-invoking the constructor (on the new objects). The problem is that the 'environ', 'keep_blank_values', and 'strict_parsing' arguments originally passed to the constructor are not propigated to the new object constructors. This causes os.environ to be used, leading to a miss-handling of the parts. I fixed this by passing these arguments to read_multi and then on to the constructor. See the context diff below. """
Diffstat (limited to 'Lib')
-rwxr-xr-xLib/cgi.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/Lib/cgi.py b/Lib/cgi.py
index 3a4e235..aaaded5 100755
--- a/Lib/cgi.py
+++ b/Lib/cgi.py
@@ -852,7 +852,7 @@ class FieldStorage:
if ctype == 'application/x-www-form-urlencoded':
self.read_urlencoded()
elif ctype[:10] == 'multipart/':
- self.read_multi()
+ self.read_multi(environ, keep_blank_values, strict_parsing)
else:
self.read_single()
@@ -919,14 +919,16 @@ class FieldStorage:
self.list.append(MiniFieldStorage(key, value))
self.skip_lines()
- def read_multi(self):
+ def read_multi(self, environ, keep_blank_values, strict_parsing):
"""Internal: read a part that is itself multipart."""
self.list = []
- part = self.__class__(self.fp, {}, self.innerboundary)
+ part = self.__class__(self.fp, {}, self.innerboundary,
+ environ, keep_blank_values, strict_parsing)
# Throw first part away
while not part.done:
headers = rfc822.Message(self.fp)
- part = self.__class__(self.fp, headers, self.innerboundary)
+ part = self.__class__(self.fp, headers, self.innerboundary,
+ environ, keep_blank_values, strict_parsing)
self.list.append(part)
self.skip_lines()