Merge: #16983: Apply postel's law to encoded words inside quoted strings.

This commit is contained in:
R David Murray 2014-02-08 13:13:01 -05:00
commit 01e46ee7e2
4 changed files with 29 additions and 0 deletions

View File

@ -1556,6 +1556,13 @@ def get_bare_quoted_string(value):
while value and value[0] != '"': while value and value[0] != '"':
if value[0] in WSP: if value[0] in WSP:
token, value = get_fws(value) 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: else:
token, value = get_qcontent(value) token, value = get_qcontent(value)
bare_quoted_string.append(token) bare_quoted_string.append(token)

View File

@ -540,6 +540,15 @@ class TestParser(TestParserMixin, TestEmailBase):
self._test_get_x(parser.get_bare_quoted_string, 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 # get_comment
def test_get_comment_only(self): def test_get_comment_only(self):

View File

@ -1155,6 +1155,16 @@ class TestAddressHeader(TestHeaderBase):
'example.com', 'example.com',
None), 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 # XXX: Need many more examples, and in particular some with names in

View File

@ -27,6 +27,9 @@ Core and Builtins
Library 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 - Issue #19772: email.generator no longer mutates the message object when
doing a down-transform from 8bit to 7bit CTEs. doing a down-transform from 8bit to 7bit CTEs.