@@ -3319,15 +3319,90 @@ def test_getaddresses(self):
33193319 [('Al Person' , 'aperson@dom.ain' ),
33203320 ('Bud Person' , 'bperson@dom.ain' )])
33213321
3322+ def test_getaddresses_parsing_errors (self ):
3323+ """Test for parsing errors from CVE-2023-27043"""
3324+ eq = self .assertEqual
3325+ eq (utils .getaddresses (['alice@example.org(<bob@example.com>' ]),
3326+ [('' , '' )])
3327+ eq (utils .getaddresses (['alice@example.org)<bob@example.com>' ]),
3328+ [('' , '' )])
3329+ eq (utils .getaddresses (['alice@example.org<<bob@example.com>' ]),
3330+ [('' , '' )])
3331+ eq (utils .getaddresses (['alice@example.org><bob@example.com>' ]),
3332+ [('' , '' )])
3333+ eq (utils .getaddresses (['alice@example.org@<bob@example.com>' ]),
3334+ [('' , '' )])
3335+ eq (utils .getaddresses (['alice@example.org,<bob@example.com>' ]),
3336+ [('' , 'alice@example.org' ), ('' , 'bob@example.com' )])
3337+ eq (utils .getaddresses (['alice@example.org;<bob@example.com>' ]),
3338+ [('' , '' )])
3339+ eq (utils .getaddresses (['alice@example.org:<bob@example.com>' ]),
3340+ [('' , '' )])
3341+ eq (utils .getaddresses (['alice@example.org.<bob@example.com>' ]),
3342+ [('' , '' )])
3343+ eq (utils .getaddresses (['alice@example.org"<bob@example.com>' ]),
3344+ [('' , '' )])
3345+ eq (utils .getaddresses (['alice@example.org[<bob@example.com>' ]),
3346+ [('' , '' )])
3347+ eq (utils .getaddresses (['alice@example.org]<bob@example.com>' ]),
3348+ [('' , '' )])
3349+
3350+ def test_parseaddr_parsing_errors (self ):
3351+ """Test for parsing errors from CVE-2023-27043"""
3352+ eq = self .assertEqual
3353+ eq (utils .parseaddr (['alice@example.org(<bob@example.com>' ]),
3354+ ('' , '' ))
3355+ eq (utils .parseaddr (['alice@example.org)<bob@example.com>' ]),
3356+ ('' , '' ))
3357+ eq (utils .parseaddr (['alice@example.org<<bob@example.com>' ]),
3358+ ('' , '' ))
3359+ eq (utils .parseaddr (['alice@example.org><bob@example.com>' ]),
3360+ ('' , '' ))
3361+ eq (utils .parseaddr (['alice@example.org@<bob@example.com>' ]),
3362+ ('' , '' ))
3363+ eq (utils .parseaddr (['alice@example.org,<bob@example.com>' ]),
3364+ ('' , '' ))
3365+ eq (utils .parseaddr (['alice@example.org;<bob@example.com>' ]),
3366+ ('' , '' ))
3367+ eq (utils .parseaddr (['alice@example.org:<bob@example.com>' ]),
3368+ ('' , '' ))
3369+ eq (utils .parseaddr (['alice@example.org.<bob@example.com>' ]),
3370+ ('' , '' ))
3371+ eq (utils .parseaddr (['alice@example.org"<bob@example.com>' ]),
3372+ ('' , '' ))
3373+ eq (utils .parseaddr (['alice@example.org[<bob@example.com>' ]),
3374+ ('' , '' ))
3375+ eq (utils .parseaddr (['alice@example.org]<bob@example.com>' ]),
3376+ ('' , '' ))
3377+
33223378 def test_getaddresses_nasty (self ):
33233379 eq = self .assertEqual
33243380 eq (utils .getaddresses (['foo: ;' ]), [('' , '' )])
3325- eq (utils .getaddresses (
3326- ['[]*-- =~$' ]),
3327- [('' , '' ), ('' , '' ), ('' , '*--' )])
3381+ eq (utils .getaddresses (['[]*-- =~$' ]), [('' , '' )])
33283382 eq (utils .getaddresses (
33293383 ['foo: ;' , '"Jason R. Mastaler" <jason@dom.ain>' ]),
33303384 [('' , '' ), ('Jason R. Mastaler' , 'jason@dom.ain' )])
3385+ eq (utils .getaddresses (
3386+ [r'Pete(A nice \) chap) <pete(his account)@silly.test(his host)>' ]),
3387+ [('Pete (A nice ) chap his account his host)' , 'pete@silly.test' )])
3388+ eq (utils .getaddresses (
3389+ ['(Empty list)(start)Undisclosed recipients :(nobody(I know))' ]),
3390+ [('' , '' )])
3391+ eq (utils .getaddresses (
3392+ ['Mary <@machine.tld:mary@example.net>, , jdoe@test . example' ]),
3393+ [('Mary' , 'mary@example.net' ), ('' , '' ), ('' , 'jdoe@test.example' )])
3394+ eq (utils .getaddresses (
3395+ ['John Doe <jdoe@machine(comment). example>' ]),
3396+ [('John Doe (comment)' , 'jdoe@machine.example' )])
3397+ eq (utils .getaddresses (
3398+ ['"Mary Smith: Personal Account" <smith@home.example>' ]),
3399+ [('Mary Smith: Personal Account' , 'smith@home.example' )])
3400+ eq (utils .getaddresses (
3401+ ['Undisclosed recipients:;' ]),
3402+ [('' , '' )])
3403+ eq (utils .getaddresses (
3404+ [r'<boss@nil.test>, "Giant; \"Big\" Box" <bob@example.net>' ]),
3405+ [('' , 'boss@nil.test' ), ('Giant; "Big" Box' , 'bob@example.net' )])
33313406
33323407 def test_getaddresses_embedded_comment (self ):
33333408 """Test proper handling of a nested comment"""
0 commit comments