Mercurial > dovecot > core-2.2
changeset 19797:f86de8cf34d9
lib: mempool-alloconly unit test improvement: verify that data stack isn't used by p_malloc()
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 21 Feb 2016 19:01:31 +0200 |
parents | 910fcbab16c7 |
children | 5bf3271eb63b |
files | src/lib/test-mempool-alloconly.c |
diffstat | 1 files changed, 11 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/test-mempool-alloconly.c Sun Feb 21 18:58:50 2016 +0200 +++ b/src/lib/test-mempool-alloconly.c Sun Feb 21 19:01:31 2016 +0200 @@ -16,15 +16,24 @@ void test_mempool_alloconly(void) { +#define SENTRY_SIZE 32 +#define SENTRY_CHAR '\xDE' #define PMALLOC_MAX_COUNT 128 pool_t pool; unsigned int i, j, k; void *mem[PMALLOC_MAX_COUNT + 1]; + char *sentry; test_begin("mempool_alloconly"); for (i = 0; i < 64; i++) { for (j = 1; j <= 128; j++) { pool = pool_alloconly_create(MEMPOOL_GROWING"test", i); + /* make sure p_malloc() doesn't overwrite unallocated + data in data stack. parts of the code relies on + this. */ + sentry = t_buffer_get(SENTRY_SIZE); + memset(sentry, SENTRY_CHAR, SENTRY_SIZE); + mem[0] = p_malloc(pool, j); memset(mem[0], j, j); @@ -32,6 +41,8 @@ mem[k] = p_malloc(pool, k); memset(mem[k], k, k); } + test_assert(mem_has_bytes(sentry, SENTRY_SIZE, SENTRY_CHAR)); + test_assert(t_buffer_get(SENTRY_SIZE) == sentry); test_assert(mem_has_bytes(mem[0], j, j)); for (k = 1; k <= PMALLOC_MAX_COUNT; k++)