diff options
author | Guido van Rossum <guido@python.org> | 1998-10-20 14:43:02 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1998-10-20 14:43:02 (GMT) |
commit | f5745008d2c78d3830e62cbd4e8f223fe69977c5 (patch) | |
tree | 58bd650fe54dce81a2ba4e2a11a0685c11bc1102 /Lib/cgi.py | |
parent | fbddddee49713f2141cfd0b17aa92ee8d16eca4a (diff) | |
download | cpython-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/cgi.py')
-rwxr-xr-x | Lib/cgi.py | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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() |