From 1aa2cebd3eff78d1c9417a4267f81166147840ec Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 28 Jul 2016 14:34:14 +0100 Subject: [PATCH] [Minor] Another sanity check --- src/libstat/backends/mmaped_file.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/libstat/backends/mmaped_file.c b/src/libstat/backends/mmaped_file.c index 86538039d..795da8b4d 100644 --- a/src/libstat/backends/mmaped_file.c +++ b/src/libstat/backends/mmaped_file.c @@ -494,14 +494,17 @@ rspamd_mmaped_file_reindex (rspamd_mempool_t *pool, } pos = map + (sizeof (struct stat_file) - sizeof (struct stat_file_block)); - while (old_size - (pos - map) >= sizeof (struct stat_file_block)) { - block = (struct stat_file_block *)pos; - if (block->hash1 != 0 && block->value != 0) { - rspamd_mmaped_file_set_block_common (pool, - new, block->hash1, - block->hash2, block->value); + + if (pos - map < (gssize)old_size) { + while ((gssize)old_size - (pos - map) >= (gssize)sizeof (struct stat_file_block)) { + block = (struct stat_file_block *)pos; + if (block->hash1 != 0 && block->value != 0) { + rspamd_mmaped_file_set_block_common (pool, + new, block->hash1, + block->hash2, block->value); + } + pos += sizeof (block); } - pos += sizeof (block); } header = (struct stat_file_header *)map; -- 2.39.5