瀏覽代碼

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

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 10 年之前
父節點
當前提交
9154f2aef3
共有 1 個檔案被更改,包括 6 行新增0 行删除
  1. 6
    0
      src/core/malloc.c

+ 6
- 0
src/core/malloc.c 查看文件

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…
取消
儲存