bpo-34155: Dont parse domains containing @ (GH-13079)

Before:
    
        >>> email.message_from_string('From: a@malicious.org@important.com', policy=email.policy.default)['from'].addresses
        (Address(display_name='', username='a', domain='malicious.org'),)
    
        >>> parseaddr('a@malicious.org@important.com')
        ('', 'a@malicious.org')
    
    After:
    
        >>> email.message_from_string('From: a@malicious.org@important.com', policy=email.policy.default)['from'].addresses
        (Address(display_name='', username='', domain=''),)
    
        >>> parseaddr('a@malicious.org@important.com')
        ('', 'a@')




https://bugs.python.org/issue34155
This commit is contained in:
jpic 2019-07-17 23:54:25 +02:00 committed by Miss Islington (bot)
parent 719a062bcb
commit 8cb65d1381
5 changed files with 37 additions and 1 deletions

View file

@ -3041,6 +3041,20 @@ class TestMiscellaneous(TestEmailBase):
self.assertEqual(utils.parseaddr('<>'), ('', ''))
self.assertEqual(utils.formataddr(utils.parseaddr('<>')), '')
def test_parseaddr_multiple_domains(self):
self.assertEqual(
utils.parseaddr('a@b@c'),
('', '')
)
self.assertEqual(
utils.parseaddr('a@b.c@c'),
('', '')
)
self.assertEqual(
utils.parseaddr('a@172.17.0.1@c'),
('', '')
)
def test_noquote_dump(self):
self.assertEqual(
utils.formataddr(('A Silly Person', 'person@dom.ain')),