@@ -3319,15 +3319,90 @@ def test_getaddresses(self):
3319
3319
[('Al Person' , 'aperson@dom.ain' ),
3320
3320
('Bud Person' , 'bperson@dom.ain' )])
3321
3321
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
+
3322
3378
def test_getaddresses_nasty (self ):
3323
3379
eq = self .assertEqual
3324
3380
eq (utils .getaddresses (['foo: ;' ]), [('' , '' )])
3325
- eq (utils .getaddresses (
3326
- ['[]*-- =~$' ]),
3327
- [('' , '' ), ('' , '' ), ('' , '*--' )])
3381
+ eq (utils .getaddresses (['[]*-- =~$' ]), [('' , '' )])
3328
3382
eq (utils .getaddresses (
3329
3383
['foo: ;' , '"Jason R. Mastaler" <jason@dom.ain>' ]),
3330
3384
[('' , '' ), ('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' )])
3331
3406
3332
3407
def test_getaddresses_embedded_comment (self ):
3333
3408
"""Test proper handling of a nested comment"""
0 commit comments