diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2018-06-18 15:02:44 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-06-21 09:34:41 +0200 |
commit | c3b57d369999af88b115b5622b0bcdcd7b2e4164 (patch) | |
tree | 34936171440cac891169ee5fcdde05ebf41fee3e /src | |
parent | 75aa1a468b1552e11cfda35c3af9df2e340a866f (diff) | |
download | cmocka-c3b57d369999af88b115b5622b0bcdcd7b2e4164.tar.gz cmocka-c3b57d369999af88b115b5622b0bcdcd7b2e4164.tar.xz cmocka-c3b57d369999af88b115b5622b0bcdcd7b2e4164.zip |
cmocka: Check for possible overflow in test_malloc()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/cmocka.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/cmocka.c b/src/cmocka.c index 0efc7ca..a6620c1 100644 --- a/src/cmocka.c +++ b/src/cmocka.c @@ -1885,12 +1885,17 @@ static void vcm_free_error(char *err_msg) /* Use the real malloc in this function. */ #undef malloc void* _test_malloc(const size_t size, const char* file, const int line) { - char* ptr; - MallocBlockInfo *block_info; + char *ptr = NULL; + MallocBlockInfo *block_info = NULL; ListNode * const block_list = get_allocated_blocks_list(); - const size_t allocate_size = size + (MALLOC_GUARD_SIZE * 2) + - sizeof(*block_info) + MALLOC_ALIGNMENT; - char* const block = (char*)malloc(allocate_size); + size_t allocate_size; + char *block = NULL; + + allocate_size = size + (MALLOC_GUARD_SIZE * 2) + + sizeof(MallocBlockInfo) + MALLOC_ALIGNMENT; + assert_true(allocate_size > size); + + block = (char *)malloc(allocate_size); assert_non_null(block); /* Calculate the returned address. */ |