From: Timo Sirainen Date: Wed, 7 Jun 2017 12:08:27 +0000 (+0300) Subject: lib-mail: message_address_parse() - don't stop at invalid addresses when parsing... X-Git-Tag: 2.2.31.rc1~87 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=49c13c7cc0c234c723a1daf688bd00d9d8b47ea9;p=thirdparty%2Fdovecot%2Fcore.git lib-mail: message_address_parse() - don't stop at invalid addresses when parsing group Also the end-group's message_address shouldn't have invalid_syntax=TRUE, except when we didn't actually find the ending ';' --- diff --git a/src/lib-mail/message-address.c b/src/lib-mail/message-address.c index d29ab31873..32c41f8e42 100644 --- a/src/lib-mail/message-address.c +++ b/src/lib-mail/message-address.c @@ -286,10 +286,10 @@ static int parse_group(struct message_address_parser_context *ctx) /* mailbox-list = (mailbox *("," mailbox)) / obs-mbox-list */ if (parse_mailbox(ctx) <= 0) { - ret = -1; - break; + /* broken mailbox - try to continue anyway. */ } - if (*ctx->parser.data != ',') + if (ctx->parser.data == ctx->parser.end || + *ctx->parser.data != ',') break; ctx->parser.data++; if (rfc822_skip_lwsp(&ctx->parser) <= 0) { @@ -299,7 +299,8 @@ static int parse_group(struct message_address_parser_context *ctx) } } if (ret >= 0) { - if (*ctx->parser.data != ';') + if (ctx->parser.data == ctx->parser.end || + *ctx->parser.data != ';') ret = -1; else { ctx->parser.data++;