8000 bpo-42967: Don't treat semicolon as a separator in urllib.parse by Fidget-Spinner · Pull Request #24271 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

bpo-42967: Don't treat semicolon as a separator in urllib.parse #24271

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 5 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
expose even more in public API
  • Loading branch information
Fidget-Spinner committed Jan 20, 2021
commit 99e86a1af2de11869d5bd204a3d247d299295ade
9 changes: 5 additions & 4 deletions Lib/cgi.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0,
if environ['REQUEST_METHOD'] == 'POST':
ctype, pdict = parse_header(environ['CONTENT_TYPE'])
if ctype == 'multipart/form-data':
return parse_multipart(fp, pdict)
return parse_multipart(fp, pdict, semicolon_sep=semicolon_sep)
elif ctype == 'application/x-www-form-urlencoded':
clength = int(environ['CONTENT_LENGTH'])
if maxlen and clength > maxlen:
Expand All @@ -185,7 +185,8 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0,
encoding=encoding, semicolon_sep=semicolon_sep)


def parse_multipart(fp, pdict, encoding="utf-8", errors="replace"):
def parse_multipart(fp, pdict, encoding="utf-8", errors="replace",
semicolon_sep=True):
"""Parse multipart input.

Arguments:
Expand All @@ -209,7 +210,7 @@ def parse_multipart(fp, pdict, encoding="utf-8", errors="replace"):
except KeyError:
pass
fs = FieldStorage(fp, headers=headers, encoding=encoding, errors=errors,
environ={'REQUEST_METHOD': 'POST'})
environ={'REQUEST_METHOD': 'POST'}, semicolon_sep=semicolon_sep)
return {k: fs.getlist(k) for k in fs}

def _parseparam(s):
Expand Down Expand Up @@ -605,7 +606,7 @@ def read_urlencoded(self):

FieldStorageClass = None

def read_multi(self, environ, keep_blank_values, strict_parsing, semicolon_sep):
def read_multi(self, environ, keep_blank_values, strict_parsing, semicolon_sep=True):
"""Internal: read a part that is itself multipart."""
ib = self.innerboundary
if not valid_boundary(ib):
Expand Down
0