aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2018-06-18 15:02:44 +0200
committerAndreas Schneider <asn@cryptomilk.org>2018-06-21 09:34:41 +0200
commitc3b57d369999af88b115b5622b0bcdcd7b2e4164 (patch)
tree34936171440cac891169ee5fcdde05ebf41fee3e /src
parent75aa1a468b1552e11cfda35c3af9df2e340a866f (diff)
downloadcmocka-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.c15
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. */