From: Timo Sirainen Date: Sun, 7 Sep 2008 16:44:09 +0000 (+0300) Subject: rfc822_parse_[dot_]atom(): Return failure if there isn't at least one character. X-Git-Tag: 1.2.alpha2~80 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f4b1d7e52e983ba3063584c8b0ef577d6946331c;p=thirdparty%2Fdovecot%2Fcore.git rfc822_parse_[dot_]atom(): Return failure if there isn't at least one character. --HG-- branch : HEAD --- diff --git a/src/lib-mail/rfc822-parser.c b/src/lib-mail/rfc822-parser.c index 7a3b92a071..0337896662 100644 --- a/src/lib-mail/rfc822-parser.c +++ b/src/lib-mail/rfc822-parser.c @@ -132,7 +132,10 @@ int rfc822_parse_atom(struct rfc822_parser_context *ctx, string_t *str) atext = ; Any character except controls, SP, and specials. */ - for (start = ctx->data; ctx->data != ctx->end; ctx->data++) { + if (ctx->data == ctx->end || !IS_ATEXT(*ctx->data)) + return -1; + + for (start = ctx->data++; ctx->data != ctx->end; ctx->data++) { if (IS_ATEXT(*ctx->data)) continue; @@ -158,7 +161,10 @@ int rfc822_parse_dot_atom(struct rfc822_parser_context *ctx, string_t *str) For RFC-822 compatibility allow LWSP around '.' */ - for (start = ctx->data; ctx->data != ctx->end; ctx->data++) { + if (ctx->data == ctx->end || !IS_ATEXT(*ctx->data)) + return -1; + + for (start = ctx->data++; ctx->data != ctx->end; ctx->data++) { if (IS_ATEXT(*ctx->data)) continue;