changeset 9504:fe1f31b4e21e HEAD

mbox: If mbox parsing notices unexpected corruption, don't assert-crash.
author Timo Sirainen <tss@iki.fi>
date Wed, 09 Dec 2009 20:06:20 -0500
parents 8d4621094e54
children 5e2206e3c750
files src/lib-storage/index/mbox/mbox-sync.c
diffstat 1 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-sync.c	Wed Dec 09 20:03:33 2009 -0500
+++ b/src/lib-storage/index/mbox/mbox-sync.c	Wed Dec 09 20:06:20 2009 -0500
@@ -148,6 +148,9 @@
 	i_assert(sync_ctx->input->v_offset != mail_ctx->mail.from_offset ||
 		 sync_ctx->input->eof);
 
+	if (istream_raw_mbox_is_corrupted(sync_ctx->input))
+		return -1;
+
 	mail_ctx->mail.body_size =
 		istream_raw_mbox_get_body_size(sync_ctx->input,
 					       mail_ctx->content_length);
@@ -1144,13 +1147,12 @@
 			ret = mbox_sync_partial_seek_next(sync_ctx, uid + 1,
 							  &partial,
 							  &skipped_mails);
-			if (ret <= 0) {
-				if (ret < 0)
-					return -1;
+			if (ret <= 0)
 				break;
-			}
 		}
 	}
+	if (ret < 0)
+		return -1;
 
 	if (istream_raw_mbox_is_eof(sync_ctx->input)) {
 		/* rest of the messages in index don't exist -> expunge them */