From: Timo Sirainen Date: Sun, 9 Mar 2003 00:35:20 +0000 (+0200) Subject: Literal parser broke if \r\n wasn't in buffer at the time '}' was parsed. X-Git-Tag: 1.1.alpha1~4818 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2568db5e5635acc7fb99d90d2fc7aca9ca912714;p=thirdparty%2Fdovecot%2Fcore.git Literal parser broke if \r\n wasn't in buffer at the time '}' was parsed. --HG-- branch : HEAD --- diff --git a/src/lib-imap/imap-parser.c b/src/lib-imap/imap-parser.c index 3816e1bee4..20d44cd8c8 100644 --- a/src/lib-imap/imap-parser.c +++ b/src/lib-imap/imap-parser.c @@ -351,9 +351,7 @@ static int imap_parser_read_string(struct imap_parser *parser, static int imap_parser_literal_end(struct imap_parser *parser) { - if ((parser->flags & IMAP_PARSE_FLAG_LITERAL_SIZE) != 0) - parser->eol = TRUE; - else { + if ((parser->flags & IMAP_PARSE_FLAG_LITERAL_SIZE) == 0) { if (parser->literal_size > parser->max_literal_size) { /* too long string, abort. */ parser->error = "Literal size too large"; @@ -453,10 +451,12 @@ static int imap_parser_read_literal_data(struct imap_parser *parser, imap_parser_save_arg(parser, data, (size_t)parser->literal_size); parser->cur_pos = (size_t)parser->literal_size; + parser->eol = TRUE; return TRUE; } } else { /* we want to save only literal size, not the literal itself. */ + parser->eol = TRUE; imap_parser_save_arg(parser, NULL, 0); return TRUE; }