File tree Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -509,14 +509,18 @@ class MailParser extends Transform {
509
509
}
510
510
511
511
decodeAddresses ( addresses ) {
512
+ let processedAddress = new WeakSet ( ) ;
512
513
for ( let i = 0 ; i < addresses . length ; i ++ ) {
513
514
let address = addresses [ i ] ;
514
515
address . name = ( address . name || '' ) . toString ( ) . trim ( ) ;
515
516
516
- if ( ! address . address && / ^ ( = \? ( [ ^ ? ] + ) \? [ B b ] \? [ ^ ? ] * \? = ) ( \s * = \? ( [ ^ ? ] + ) \? [ B b ] \? [ ^ ? ] * \? = ) * $ / . test ( address . name ) ) {
517
+ if ( ! address . address && / ^ ( = \? ( [ ^ ? ] + ) \? [ B b ] \? [ ^ ? ] * \? = ) ( \s * = \? ( [ ^ ? ] + ) \? [ B b ] \? [ ^ ? ] * \? = ) * $ / . test ( address . name ) && ! processedAddress . has ( address ) ) {
517
518
let parsed = addressparser ( this . libmime . decodeWords ( address . name ) ) ;
518
519
if ( parsed . length ) {
519
- parsed . forEach ( entry => addresses . push ( entry ) ) ;
520
+ parsed . forEach ( entry => {
521
+ processedAddress . add ( entry ) ;
522
+ addresses . push ( entry ) ;
523
+ } ) ;
520
524
}
521
525
522
526
// remove current element
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ const simpleParser = require ( '..' ) . simpleParser ;
4
+
5
+ module . exports [ 'Hangs when Reply-To invalid encoded' ] = async test => {
6
+ await simpleParser ( 'Content-type: text/plain\r\nReply-To: =?U� -8?B?0=D0=BA=D0=BE=D0=B2?=\n\r\n1234' ) ;
7
+ test . done ( ) ;
8
+ } ;
You can’t perform that action at this time.
0 commit comments