From 545c955be997efd6b3827b981024e6b9945d82d1 Mon Sep 17 00:00:00 2001 From: Amber Brown Date: Mon, 14 May 2018 18:11:55 -0400 Subject: bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in FieldStorage use the given errors (GH-6804) --- Lib/cgi.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'Lib/cgi.py') diff --git a/Lib/cgi.py b/Lib/cgi.py index f5e85aa263b..f82cc6c8bd5 100755 --- a/Lib/cgi.py +++ b/Lib/cgi.py @@ -198,13 +198,14 @@ def parse_qsl(qs, keep_blank_values=0, strict_parsing=0): DeprecationWarning, 2) return urllib.parse.parse_qsl(qs, keep_blank_values, strict_parsing) -def parse_multipart(fp, pdict, encoding="utf-8"): +def parse_multipart(fp, pdict, encoding="utf-8", errors="replace"): """Parse multipart input. Arguments: fp : input file pdict: dictionary containing other parameters of content-type header - encoding: request encoding + encoding, errors: request encoding and error handler, passed to + FieldStorage Returns a dictionary just like parse_qs(): keys are the field names, each value is a list of values for that field. For non-file fields, the value @@ -217,7 +218,7 @@ def parse_multipart(fp, pdict, encoding="utf-8"): headers = Message() headers.set_type(ctype) headers['Content-Length'] = pdict['CONTENT-LENGTH'] - fs = FieldStorage(fp, headers=headers, encoding=encoding, + fs = FieldStorage(fp, headers=headers, encoding=encoding, errors=errors, environ={'REQUEST_METHOD': 'POST'}) return {k: fs.getlist(k) for k in fs} @@ -458,7 +459,8 @@ def __init__(self, fp=None, headers=None, outerboundary=b'', self.type = ctype self.type_options = pdict if 'boundary' in pdict: - self.innerboundary = pdict['boundary'].encode(self.encoding) + self.innerboundary = pdict['boundary'].encode(self.encoding, + self.errors) else: self.innerboundary = b"" -- cgit v1.2.3-65-gdbad