]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Avoid assert-crashing with broken transaction log files.
authorTimo Sirainen <tss@iki.fi>
Sun, 25 May 2008 01:17:39 +0000 (04:17 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 25 May 2008 01:17:39 +0000 (04:17 +0300)
--HG--
branch : HEAD

src/lib-index/mail-transaction-log-view.c

index 0d18afadb40108fb14a42b6fcdc98c60fe866e0c..147b506dd5ca1bd057b51ebf3a66bf8a2f400988 100644 (file)
@@ -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) {