@@ -3213,15 +3213,90 @@ def test_getaddresses(self):
32133213 [('Al Person' , 'aperson@dom.ain' ),
32143214 ('Bud Person' , 'bperson@dom.ain' )])
32153215
3216+ def test_getaddresses_parsing_errors (self ):
3217+ """Test for parsing errors from CVE-2023-27043"""
3218+ eq = self .assertEqual
3219+ eq (utils .getaddresses (['alice@example.org(<bob@example.com>' ]),
3220+ [('' , '' )])
3221+ eq (utils .getaddresses (['alice@example.org)<bob@example.com>' ]),
3222+ [('' , '' )])
3223+ eq (utils .getaddresses (['alice@example.org<<bob@example.com>' ]),
3224+ [('' , '' )])
3225+ eq (utils .getaddresses (['alice@example.org><bob@example.com>' ]),
3226+ [('' , '' )])
3227+ eq (utils .getaddresses (['alice@example.org@<bob@example.com>' ]),
3228+ [('' , '' )])
3229+ eq (utils .getaddresses (['alice@example.org,<bob@example.com>' ]),
3230+ [('' , 'alice@example.org' ), ('' , 'bob@example.com' )])
3231+ eq (utils .getaddresses (['alice@example.org;<bob@example.com>' ]),
3232+ [('' , '' )])
3233+ eq (utils .getaddresses (['alice@example.org:<bob@example.com>' ]),
3234+ [('' , '' )])
3235+ eq (utils .getaddresses (['alice@example.org.<bob@example.com>' ]),
3236+ [('' , '' )])
3237+ eq (utils .getaddresses (['alice@example.org"<bob@example.com>' ]),
3238+ [('' , '' )])
3239+ eq (utils .getaddresses (['alice@example.org[<bob@example.com>' ]),
3240+ [('' , '' )])
3241+ eq (utils .getaddresses (['alice@example.org]<bob@example.com>' ]),
3242+ [('' , '' )])
3243+
3244+ def test_parseaddr_parsing_errors (self ):
3245+ """Test for parsing errors from CVE-2023-27043"""
3246+ eq = self .assertEqual
3247+ eq (utils .parseaddr (['alice@example.org(<bob@example.com>' ]),
3248+ ('' , '' ))
3249+ eq (utils .parseaddr (['alice@example.org)<bob@example.com>' ]),
3250+ ('' , '' ))
3251+ eq (utils .parseaddr (['alice@example.org<<bob@example.com>' ]),
3252+ ('' , '' ))
3253+ eq (utils .parseaddr (['alice@example.org><bob@example.com>' ]),
3254+ ('' , '' ))
3255+ eq (utils .parseaddr (['alice@example.org@<bob@example.com>' ]),
3256+ ('' , '' ))
3257+ eq (utils .parseaddr (['alice@example.org,<bob@example.com>' ]),
3258+ ('' , '' ))
3259+ eq (utils .parseaddr (['alice@example.org;<bob@example.com>' ]),
3260+ ('' , '' ))
3261+ eq (utils .parseaddr (['alice@example.org:<bob@example.com>' ]),
3262+ ('' , '' ))
3263+ eq (utils .parseaddr (['alice@example.org.<bob@example.com>' ]),
3264+ ('' , '' ))
3265+ eq (utils .parseaddr (['alice@example.org"<bob@example.com>' ]),
3266+ ('' , '' ))
3267+ eq (utils .parseaddr (['alice@example.org[<bob@example.com>' ]),
3268+ ('' , '' ))
3269+ eq (utils .parseaddr (['alice@example.org]<bob@example.com>' ]),
3270+ ('' , '' ))
3271+
32163272 def test_getaddresses_nasty (self ):
32173273 eq = self .assertEqual
32183274 eq (utils .getaddresses (['foo: ;' ]), [('' , '' )])
3219- eq (utils .getaddresses (
3220- ['[]*-- =~$' ]),
3221- [('' , '' ), ('' , '' ), ('' , '*--' )])
3275+ eq (utils .getaddresses (['[]*-- =~$' ]), [('' , '' )])
32223276 eq (utils .getaddresses (
32233277 ['foo: ;' , '"Jason R. Mastaler" <jason@dom.ain>' ]),
32243278 [('' , '' ), ('Jason R. Mastaler' , 'jason@dom.ain' )])
3279+ eq (utils .getaddresses (
3280+ [r'Pete(A nice \) chap) <pete(his account)@silly.test(his host)>' ]),
3281+ [('Pete (A nice ) chap his account his host)' , 'pete@silly.test' )])
3282+ eq (utils .getaddresses (
3283+ ['(Empty list)(start)Undisclosed recipients :(nobody(I know))' ]),
3284+ [('' , '' )])
3285+ eq (utils .getaddresses (
3286+ ['Mary <@machine.tld:mary@example.net>, , jdoe@test . example' ]),
3287+ [('Mary' , 'mary@example.net' ), ('' , '' ), ('' , 'jdoe@test.example' )])
3288+ eq (utils .getaddresses (
3289+ ['John Doe <jdoe@machine(comment). example>' ]),
3290+ [('John Doe (comment)' , 'jdoe@machine.example' )])
3291+ eq (utils .getaddresses (
3292+ ['"Mary Smith: Personal Account" <smith@home.example>' ]),
3293+ [('Mary Smith: Personal Account' , 'smith@home.example' )])
3294+ eq (utils .getaddresses (
3295+ ['Undisclosed recipients:;' ]),
3296+ [('' , '' )])
3297+ eq (utils .getaddresses (
3298+ [r'<boss@nil.test>, "Giant; \"Big\" Box" <bob@example.net>' ]),
3299+ [('' , 'boss@nil.test' ), ('Giant; "Big" Box' , 'bob@example.net' )])
32253300
32263301 def test_getaddresses_embedded_comment (self ):
32273302 """Test proper handling of a nested comment"""
0 commit comments