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));