changeset 7545:2c3bb09045be HEAD

Avoid assert-crashing with broken transaction log files.
author Timo Sirainen <tss@iki.fi>
date Sun, 25 May 2008 04:17:39 +0300
parents 7512b6d8afe1
children 7940ff8ecd13
files src/lib-index/mail-transaction-log-view.c
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-transaction-log-view.c	Sun May 25 03:11:15 2008 +0300
+++ b/src/lib-index/mail-transaction-log-view.c	Sun May 25 04:17:39 2008 +0300
@@ -149,6 +149,16 @@
 		return -1;
 	}
 
+	if (min_file_offset > 0 && min_file_offset < view->tail->hdr.hdr_size) {
+		/* log file offset is probably corrupted in the index file. */
+		mail_transaction_log_view_set_corrupted(view,
+			"file_seq=%u, min_file_offset (%"PRIuUOFF_T
+			") < hdr_size (%u)",
+			min_file_seq, min_file_offset,
+			view->tail->hdr.hdr_size);
+		return -1;
+	}
+
 	view->tail = view->head = file = NULL;
 	for (seq = min_file_seq; seq <= max_file_seq; seq++) {
 		if (file == NULL || file->hdr.file_seq != seq) {