]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: mempool-allocfree - include overhead in size check
authorAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 27 Nov 2017 10:32:54 +0000 (12:32 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 27 Nov 2017 13:20:08 +0000 (15:20 +0200)
Found by valgrind

src/lib/mempool-allocfree.c

index 15908dcdd9d5a46f371ff2f3cc3729a3f4a3ce50..e80b8af05bf6f9fa30460330b11376a7681555b0 100644 (file)
@@ -171,7 +171,7 @@ static void *pool_allocfree_malloc(pool_t pool, size_t size)
        struct allocfree_pool *apool =
                container_of(pool, struct allocfree_pool, pool);
 
-       if (unlikely(size == 0 || size > SSIZE_T_MAX))
+       if (unlikely(size == 0 || size > SSIZE_T_MAX - SIZEOF_POOLBLOCK))
                i_panic("Trying to allocate %"PRIuSIZE_T" bytes", size);
 
        struct pool_block *block = calloc(1, SIZEOF_POOLBLOCK + size);
@@ -201,7 +201,7 @@ static void *pool_allocfree_realloc(pool_t pool, void *mem,
                container_of(pool, struct allocfree_pool, pool);
        unsigned char *new_mem;
 
-       if (unlikely(new_size == 0 || new_size > SSIZE_T_MAX))
+       if (unlikely(new_size == 0 || new_size > SSIZE_T_MAX - SIZEOF_POOLBLOCK))
                i_panic("Trying to allocate %"PRIuSIZE_T" bytes", new_size);
 
        if (mem == NULL)