From: Vsevolod Stakhov Date: Thu, 28 Jul 2016 13:34:14 +0000 (+0100) Subject: [Minor] Another sanity check X-Git-Tag: 1.3.1~43 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1aa2cebd3eff78d1c9417a4267f81166147840ec;p=thirdparty%2Frspamd.git [Minor] Another sanity check --- diff --git a/src/libstat/backends/mmaped_file.c b/src/libstat/backends/mmaped_file.c index 86538039d8..795da8b4dc 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;