From: Timo Sirainen Date: Sun, 25 May 2008 01:17:39 +0000 (+0300) Subject: Avoid assert-crashing with broken transaction log files. X-Git-Tag: 1.1.rc6~30 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a4d209d480d453566d331e870b8d0c99af7716c8;p=thirdparty%2Fdovecot%2Fcore.git Avoid assert-crashing with broken transaction log files. --HG-- branch : HEAD --- diff --git a/src/lib-index/mail-transaction-log-view.c b/src/lib-index/mail-transaction-log-view.c index 0d18afadb4..147b506dd5 100644 --- a/src/lib-index/mail-transaction-log-view.c +++ b/src/lib-index/mail-transaction-log-view.c @@ -149,6 +149,16 @@ int mail_transaction_log_view_set(struct mail_transaction_log_view *view, 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) {