Skip to content

Commit 38b7df2

Browse files
committed
Merge branch 'jonny64-v3.4.0_hang'
2 parents dd33c76 + a645760 commit 38b7df2

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

lib/mail-parser.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -509,14 +509,18 @@ class MailParser extends Transform {
509509
}
510510

511511
decodeAddresses(addresses) {
512+
let processedAddress = new WeakSet();
512513
for (let i = 0; i < addresses.length; i++) {
513514
let address = addresses[i];
514515
address.name = (address.name || '').toString().trim();
515516

516-
if (!address.address && /^(=\?([^?]+)\?[Bb]\?[^?]*\?=)(\s*=\?([^?]+)\?[Bb]\?[^?]*\?=)*$/.test(address.name)) {
517+
if (!address.address && /^(=\?([^?]+)\?[Bb]\?[^?]*\?=)(\s*=\?([^?]+)\?[Bb]\?[^?]*\?=)*$/.test(address.name) && !processedAddress.has(address)) {
517518
let parsed = addressparser(this.libmime.decodeWords(address.name));
518519
if (parsed.length) {
519-
parsed.forEach(entry => addresses.push(entry));
520+
parsed.forEach(entry => {
521+
processedAddress.add(entry);
522+
addresses.push(entry);
523+
});
520524
}
521525

522526
// remove current element

test/issue-337-test.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
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+
};

0 commit comments

Comments
 (0)