Browse Source

[malloc] Sanity check parameters to alloc_memblock() and free_memblock()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 9 years ago
parent
commit
9154f2aef3
1 changed files with 6 additions and 0 deletions
  1. 6
    0
      src/core/malloc.c

+ 6
- 0
src/core/malloc.c View File

237
 	struct memory_block *post;
237
 	struct memory_block *post;
238
 	struct memory_block *ptr;
238
 	struct memory_block *ptr;
239
 
239
 
240
+	/* Sanity checks */
241
+	assert ( size != 0 );
242
+	assert ( ( align == 0 ) || ( ( align & ( align - 1 ) ) == 0 ) );
243
+
240
 	valgrind_make_blocks_defined();
244
 	valgrind_make_blocks_defined();
241
 
245
 
242
 	/* Round up size to multiple of MIN_MEMBLOCK_SIZE and
246
 	/* Round up size to multiple of MIN_MEMBLOCK_SIZE and
338
 	/* Round up size to match actual size that alloc_memblock()
342
 	/* Round up size to match actual size that alloc_memblock()
339
 	 * would have used.
343
 	 * would have used.
340
 	 */
344
 	 */
345
+	assert ( size != 0 );
341
 	size = ( size + MIN_MEMBLOCK_SIZE - 1 ) & ~( MIN_MEMBLOCK_SIZE - 1 );
346
 	size = ( size + MIN_MEMBLOCK_SIZE - 1 ) & ~( MIN_MEMBLOCK_SIZE - 1 );
342
 	freeing = ptr;
347
 	freeing = ptr;
343
 	VALGRIND_MAKE_MEM_DEFINED ( freeing, sizeof ( *freeing ) );
348
 	VALGRIND_MAKE_MEM_DEFINED ( freeing, sizeof ( *freeing ) );
444
 					   data );
449
 					   data );
445
 		VALGRIND_MAKE_MEM_DEFINED ( old_block, offsetof ( struct autosized_block, data ) );
450
 		VALGRIND_MAKE_MEM_DEFINED ( old_block, offsetof ( struct autosized_block, data ) );
446
 		old_total_size = old_block->size;
451
 		old_total_size = old_block->size;
452
+		assert ( old_total_size != 0 );
447
 		old_size = ( old_total_size -
453
 		old_size = ( old_total_size -
448
 			     offsetof ( struct autosized_block, data ) );
454
 			     offsetof ( struct autosized_block, data ) );
449
 		memcpy ( new_ptr, old_ptr,
455
 		memcpy ( new_ptr, old_ptr,

Loading…
Cancel
Save