dovecot-1.2: Message address parser didn't handle empty group:; ...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Mar 31 06:12:55 EEST 2009
details: http://hg.dovecot.org/dovecot-1.2/rev/e5658894cd13
changeset: 8877:e5658894cd13
user: Timo Sirainen <tss at iki.fi>
date: Mon Mar 30 23:12:44 2009 -0400
description:
Message address parser didn't handle empty group:; correctly.
diffstat:
1 file changed, 21 insertions(+), 23 deletions(-)
src/lib-mail/message-address.c | 44 +++++++++++++++++++---------------------
diffs (62 lines):
diff -r 88aeadb32151 -r e5658894cd13 src/lib-mail/message-address.c
--- a/src/lib-mail/message-address.c Mon Mar 30 20:27:14 2009 -0400
+++ b/src/lib-mail/message-address.c Mon Mar 30 23:12:44 2009 -0400
@@ -206,21 +206,6 @@ static int parse_mailbox(struct message_
return ret;
}
-static int parse_mailbox_list(struct message_address_parser_context *ctx)
-{
- int ret;
-
- /* mailbox-list = (mailbox *("," mailbox)) / obs-mbox-list */
- while ((ret = parse_mailbox(ctx)) != 0) {
- if (*ctx->parser.data != ',')
- break;
- ctx->parser.data++;
- if ((ret = rfc822_skip_lwsp(&ctx->parser)) <= 0)
- break;
- }
- return ret;
-}
-
static int parse_group(struct message_address_parser_context *ctx)
{
int ret;
@@ -243,15 +228,28 @@ static int parse_group(struct message_ad
ctx->addr.mailbox = p_strdup(ctx->pool, str_c(ctx->str));
add_address(ctx);
- if (ret > 0) {
- if ((ret = parse_mailbox_list(ctx)) > 0) {
- if (*ctx->parser.data != ';')
+ if (ret > 0 && *ctx->parser.data != ';') {
+ for (;;) {
+ /* mailbox-list =
+ (mailbox *("," mailbox)) / obs-mbox-list */
+ if (parse_mailbox(ctx) <= 0) {
ret = -1;
- else {
- ctx->parser.data++;
- ret = rfc822_skip_lwsp(&ctx->parser);
- }
- }
+ break;
+ }
+ if (*ctx->parser.data != ',')
+ break;
+ ctx->parser.data++;
+ if (rfc822_skip_lwsp(&ctx->parser) <= 0) {
+ ret = -1;
+ break;
+ }
+ }
+ }
+ if (*ctx->parser.data != ';')
+ ret = -1;
+ else {
+ ctx->parser.data++;
+ ret = rfc822_skip_lwsp(&ctx->parser);
}
if (ret < 0)
ctx->addr.invalid_syntax = TRUE;
More information about the dovecot-cvs
mailing list