bpo-32178: Fix IndexError trying to parse 'To' header starting with ':'. (GH-15044)
This should fix the IndexError trying to retrieve `DisplayName.display_name` and `DisplayName.value` when the `value` is basically an empty string.
https://bugs.python.org/issue32178
(cherry picked from commit 09a1872a80
)
Co-authored-by: Abhilash Raj <maxking@users.noreply.github.com>
This commit is contained in:
parent
c61f9b57cf
commit
9500bbe937
|
@ -549,6 +549,8 @@ class DisplayName(Phrase):
|
|||
@property
|
||||
def display_name(self):
|
||||
res = TokenList(self)
|
||||
if len(res) == 0:
|
||||
return res.value
|
||||
if res[0].token_type == 'cfws':
|
||||
res.pop(0)
|
||||
else:
|
||||
|
@ -570,7 +572,7 @@ class DisplayName(Phrase):
|
|||
for x in self:
|
||||
if x.token_type == 'quoted-string':
|
||||
quote = True
|
||||
if quote:
|
||||
if len(self) != 0 and quote:
|
||||
pre = post = ''
|
||||
if self[0].token_type=='cfws' or self[0][0].token_type=='cfws':
|
||||
pre = ' '
|
||||
|
|
|
@ -1680,6 +1680,14 @@ class TestParser(TestParserMixin, TestEmailBase):
|
|||
self.assertEqual(display_name[3].comments, ['with trailing comment'])
|
||||
self.assertEqual(display_name.display_name, 'simple phrase.')
|
||||
|
||||
def test_get_display_name_for_invalid_address_field(self):
|
||||
# bpo-32178: Test that address fields starting with `:` don't cause
|
||||
# IndexError when parsing the display name.
|
||||
display_name = self._test_get_x(
|
||||
parser.get_display_name,
|
||||
':Foo ', '', '', [errors.InvalidHeaderDefect], ':Foo ')
|
||||
self.assertEqual(display_name.value, '')
|
||||
|
||||
# get_name_addr
|
||||
|
||||
def test_get_name_addr_angle_addr_only(self):
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix IndexError in :mod:`email` package when trying to parse invalid address fields starting with ``:``.
|
Loading…
Reference in New Issue