changeset 21237:a0be55f275c5

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)
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Mon, 28 Nov 2016 13:04:47 +0200
parents dff211013d38
children bfbe1f6b8ab6
files src/lib-index/mail-transaction-log-file.c
diffstat 1 files changed, 2 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-transaction-log-file.c	Mon Nov 28 12:16:26 2016 +0200
+++ b/src/lib-index/mail-transaction-log-file.c	Mon Nov 28 13:04:47 2016 +0200
@@ -1372,6 +1372,8 @@
 		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) {