From: Timo Sirainen Date: Mon, 28 Nov 2016 11:04:47 +0000 (+0200) Subject: lib-index: Fix assert-crash after "log file shrank" error. X-Git-Tag: 2.2.27~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=daa3eb974db95e16c790b6d45aa0d0be78b60f3c;p=thirdparty%2Fdovecot%2Fcore.git lib-index: Fix assert-crash after "log file shrank" error. Fixes: Panic: file buffer.c: line 316 (buffer_set_used_size): assertion failed: (used_size <= buf->alloc) --- diff --git a/src/lib-index/mail-transaction-log-file.c b/src/lib-index/mail-transaction-log-file.c index 4d24e705d1..92c7496ade 100644 --- a/src/lib-index/mail-transaction-log-file.c +++ b/src/lib-index/mail-transaction-log-file.c @@ -1372,6 +1372,8 @@ mail_transaction_log_file_sync(struct mail_transaction_log_file *file) mail_transaction_log_file_set_corrupted(file, "log file shrank (%"PRIuUOFF_T" < %"PRIuUOFF_T")", file->buffer_offset + (uoff_t)size, file->sync_offset); + /* fix the sync_offset to avoid crashes later on */ + file->sync_offset = file->buffer_offset + size; return -1; } while (file->sync_offset - file->buffer_offset + sizeof(*hdr) <= size) {