Skip to content

Commit 2be0124

Browse files
bpo-33476: Fix _header_value_parser when address group is missing final ';' (GH-7484)
(cherry picked from commit 8fe9eed) Co-authored-by: Dong-hee Na <[email protected]>
1 parent 2335544 commit 2be0124

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

Lib/email/_header_value_parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1875,7 +1875,7 @@ def get_group(value):
18751875
if not value:
18761876
group.defects.append(errors.InvalidHeaderDefect(
18771877
"end of header in group"))
1878-
if value[0] != ';':
1878+
elif value[0] != ';':
18791879
raise errors.HeaderParseError(
18801880
"expected ';' at end of group but found {}".format(value))
18811881
group.append(ValueTerminal(';', 'group-terminator'))

Lib/test/test_email/test__header_value_parser.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2152,6 +2152,31 @@ def test_get_group_one_invalid(self):
21522152
self.assertEqual(group.mailboxes[1].local_part, 'x')
21532153
self.assertIsNone(group.all_mailboxes[1].display_name)
21542154

2155+
def test_get_group_missing_final_semicol(self):
2156+
group = self._test_get_x(parser.get_group,
2157+
('Monty Python:"Fred A. Bear" <[email protected]>,'
2158+
'[email protected],John <jdoe@test>'),
2159+
('Monty Python:"Fred A. Bear" <[email protected]>,'
2160+
'[email protected],John <jdoe@test>;'),
2161+
('Monty Python:"Fred A. Bear" <[email protected]>,'
2162+
'[email protected],John <jdoe@test>;'),
2163+
[errors.InvalidHeaderDefect],
2164+
'')
2165+
self.assertEqual(group.token_type, 'group')
2166+
self.assertEqual(group.display_name, 'Monty Python')
2167+
self.assertEqual(len(group.mailboxes), 3)
2168+
self.assertEqual(group.mailboxes,
2169+
group.all_mailboxes)
2170+
self.assertEqual(group.mailboxes[0].addr_spec,
2171+
2172+
self.assertEqual(group.mailboxes[0].display_name,
2173+
'Fred A. Bear')
2174+
self.assertEqual(group.mailboxes[1].addr_spec,
2175+
2176+
self.assertEqual(group.mailboxes[2].display_name,
2177+
'John')
2178+
self.assertEqual(group.mailboxes[2].addr_spec,
2179+
'jdoe@test')
21552180
# get_address
21562181

21572182
def test_get_address_simple(self):
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix _header_value_parser.py when address group is missing final ';'.
2+
Contributed by Enrique Perez-Terron

0 commit comments

Comments
 (0)