From: Timo Sirainen Date: Fri, 4 Dec 2015 09:38:00 +0000 (+0200) Subject: lib-index: mail_transaction_log_file_map() didn't properly check start_offset X-Git-Tag: 2.2.20~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6e1a910370a55db38b97e12026cd69b2dab38bef;p=thirdparty%2Fdovecot%2Fcore.git lib-index: mail_transaction_log_file_map() didn't properly check start_offset If it was too high, it still returned successful mapping. This could have caused an assert-crash later on when the start_offset was actually attempted to be used. --- diff --git a/src/lib-index/mail-transaction-log-file.c b/src/lib-index/mail-transaction-log-file.c index eea8e59a62..1b390c2c20 100644 --- a/src/lib-index/mail-transaction-log-file.c +++ b/src/lib-index/mail-transaction-log-file.c @@ -1681,6 +1681,7 @@ int mail_transaction_log_file_map(struct mail_transaction_log_file *file, uoff_t start_offset, uoff_t end_offset) { struct mail_index *index = file->log->index; + uoff_t map_start_offset = start_offset; size_t size; int ret; @@ -1736,14 +1737,14 @@ int mail_transaction_log_file_map(struct mail_transaction_log_file *file, /* although we could just skip over the unwanted data, we have to sync everything so that modseqs are calculated correctly */ - start_offset = file->sync_offset; + map_start_offset = file->sync_offset; } if ((file->log->index->flags & MAIL_INDEX_OPEN_FLAG_MMAP_DISABLE) == 0) - ret = mail_transaction_log_file_map_mmap(file, start_offset); + ret = mail_transaction_log_file_map_mmap(file, map_start_offset); else { mail_transaction_log_file_munmap(file); - ret = mail_transaction_log_file_read(file, start_offset, FALSE); + ret = mail_transaction_log_file_read(file, map_start_offset, FALSE); } i_assert(file->buffer == NULL || file->mmap_base != NULL ||