Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8103:360ade35792f HEAD
Fixed infinite looping when parsing some (not all) broken multipart mails
that didn't end with proper --boundary--.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 22 Aug 2008 02:24:38 +0300 |
parents | 277aadb0ef8c |
children | b03b937dadcf |
files | src/lib-mail/message-parser.c |
diffstat | 1 files changed, 4 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-mail/message-parser.c Fri Aug 22 01:15:13 2008 +0300 +++ b/src/lib-mail/message-parser.c Fri Aug 22 02:24:38 2008 +0300 @@ -336,6 +336,7 @@ } } + i_assert(block_r->size > 0); for (i = boundary_start = 0; i < block_r->size; i++) { /* skip to beginning of the next line. the first line was handled already. */ @@ -380,6 +381,9 @@ ret = 0; ctx->want_count = (block_r->size - boundary_start) + 1; } + } else if (ret == 0 && eof) { + /* we can't get any more data */ + ret = -1; } i_assert(!(ret == 0 && full));