Kaydet (Commit) a74e8688 authored tarafından Barry Warsaw's avatar Barry Warsaw

A fix for parsing parameters when there are semicolons inside the

quotes.  Fixes SF bug #794466, with the essential patch provided by
Stuart D. Gathman.  Specifically,

_parseparam(), _get_params_preserve(): Use the parsing function that
takes quotes into account, as given (essentially) in the bug report's
test program.

Backport candidate.
üst 6ec58ca9
......@@ -58,6 +58,23 @@ def _formatparam(param, value=None, quote=True):
else:
return param
def _parseparam(s):
plist = []
while s[:1] == ';':
s = s[1:]
end = s.find(';')
while end > 0 and s.count('"', 0, end) % 2:
end = s.find(';', end + 1)
if end < 0:
end = len(s)
f = s[:end]
if '=' in f:
i = f.index('=')
f = f[:i].strip().lower() + '=' + f[i+1:].strip()
plist.append(f.strip())
s = s[end:]
return plist
def _unquotevalue(value):
if isinstance(value, TupleType):
......@@ -525,7 +542,7 @@ class Message:
if value is missing:
return failobj
params = []
for p in paramre.split(value):
for p in _parseparam(';' + value):
try:
name, val = p.split('=', 1)
name = name.strip()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment