mirror of https://github.com/python/cpython
Merge: #16983: Apply postel's law to encoded words inside quoted strings.
This commit is contained in:
commit
01e46ee7e2
|
@ -1556,6 +1556,13 @@ def get_bare_quoted_string(value):
|
|||
while value and value[0] != '"':
|
||||
if value[0] in WSP:
|
||||
token, value = get_fws(value)
|
||||
elif value[:2] == '=?':
|
||||
try:
|
||||
token, value = get_encoded_word(value)
|
||||
bare_quoted_string.defects.append(errors.InvalidHeaderDefect(
|
||||
"encoded word inside quoted string"))
|
||||
except errors.HeaderParseError:
|
||||
token, value = get_qcontent(value)
|
||||
else:
|
||||
token, value = get_qcontent(value)
|
||||
bare_quoted_string.append(token)
|
||||
|
|
|
@ -540,6 +540,15 @@ class TestParser(TestParserMixin, TestEmailBase):
|
|||
self._test_get_x(parser.get_bare_quoted_string,
|
||||
'""', '""', '', [], '')
|
||||
|
||||
# Issue 16983: apply postel's law to some bad encoding.
|
||||
def test_encoded_word_inside_quotes(self):
|
||||
self._test_get_x(parser.get_bare_quoted_string,
|
||||
'"=?utf-8?Q?not_really_valid?="',
|
||||
'"not really valid"',
|
||||
'not really valid',
|
||||
[errors.InvalidHeaderDefect],
|
||||
'')
|
||||
|
||||
# get_comment
|
||||
|
||||
def test_get_comment_only(self):
|
||||
|
|
|
@ -1155,6 +1155,16 @@ class TestAddressHeader(TestHeaderBase):
|
|||
'example.com',
|
||||
None),
|
||||
|
||||
'rfc2047_atom_in_quoted_string_is_decoded':
|
||||
('"=?utf-8?q?=C3=89ric?=" <foo@example.com>',
|
||||
[errors.InvalidHeaderDefect],
|
||||
'Éric <foo@example.com>',
|
||||
'Éric',
|
||||
'foo@example.com',
|
||||
'foo',
|
||||
'example.com',
|
||||
None),
|
||||
|
||||
}
|
||||
|
||||
# XXX: Need many more examples, and in particular some with names in
|
||||
|
|
|
@ -27,6 +27,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #16983: the new email header parsing code will now decode encoded words
|
||||
that are (incorrectly) surrounded by quotes, and register a defect.
|
||||
|
||||
- Issue #19772: email.generator no longer mutates the message object when
|
||||
doing a down-transform from 8bit to 7bit CTEs.
|
||||
|
||||
|
|
Loading…
Reference in New Issue