From: Timo Sirainen Date: Wed, 17 Sep 2008 19:34:08 +0000 (+0300) Subject: message address parser: Fixed some assert-crashes. X-Git-Tag: 1.2.alpha2~46 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1f5a67dcd42f4422274ac9bfcf6d9e2e2313377b;p=thirdparty%2Fdovecot%2Fcore.git message address parser: Fixed some assert-crashes. --HG-- branch : HEAD --- diff --git a/src/lib-mail/message-address.c b/src/lib-mail/message-address.c index ab310dfb43..d067e6496d 100644 --- a/src/lib-mail/message-address.c +++ b/src/lib-mail/message-address.c @@ -86,7 +86,7 @@ static int parse_domain_list(struct message_address_parser_context *ctx) if ((ret = rfc822_parse_domain(&ctx->parser, ctx->str)) <= 0) return ret; - while (rfc822_skip_lwsp(&ctx->parser) && + while (rfc822_skip_lwsp(&ctx->parser) > 0 && *ctx->parser.data == ',') ctx->parser.data++; } @@ -237,18 +237,20 @@ static int parse_group(struct message_address_parser_context *ctx) /* from now on don't return -1 even if there are problems, so that the caller knows this is a group */ ctx->parser.data++; - if (rfc822_skip_lwsp(&ctx->parser) < 0) + if ((ret = rfc822_skip_lwsp(&ctx->parser)) <= 0) ctx->addr.invalid_syntax = TRUE; ctx->addr.mailbox = p_strdup(ctx->pool, str_c(ctx->str)); add_address(ctx); - if ((ret = parse_mailbox_list(ctx)) > 0) { - if (*ctx->parser.data != ';') - ret = -1; - else { - ctx->parser.data++; - ret = rfc822_skip_lwsp(&ctx->parser); + if (ret > 0) { + if ((ret = parse_mailbox_list(ctx)) > 0) { + if (*ctx->parser.data != ';') + ret = -1; + else { + ctx->parser.data++; + ret = rfc822_skip_lwsp(&ctx->parser); + } } } if (ret < 0)