]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
If cached message part showed header's size to be smaller than in reality,
authorTimo Sirainen <tss@iki.fi>
Mon, 2 Jun 2008 18:06:27 +0000 (21:06 +0300)
committerTimo Sirainen <tss@iki.fi>
Mon, 2 Jun 2008 18:06:27 +0000 (21:06 +0300)
return "broken" instead of assert-crashing.

--HG--
branch : HEAD

src/lib-mail/message-parser.c

index cdf98b010e02a7dba0115f94c0eae26d86155149..a5093e9d4530c09489bb732b81370ab966f66917 100644 (file)
@@ -617,7 +617,11 @@ static int preparsed_parse_body_init(struct message_parser_ctx *ctx,
        uoff_t offset = ctx->part->physical_pos +
                ctx->part->header_size.physical_size;
 
-       i_assert(offset >= ctx->input->v_offset);
+       if (offset < ctx->input->v_offset) {
+               /* header was actually larger than the cached size suggested */
+               ctx->broken = TRUE;
+               return -1;
+       }
        i_stream_skip(ctx->input, offset - ctx->input->v_offset);
 
        ctx->parse_next_block = preparsed_parse_body_more;