kernel/heap: Check for multiplication overflows in calloc.
Logic inspired by musl's.
This commit is contained in:
@@ -2482,6 +2482,9 @@ realloc(void *address, size_t newSize)
|
|||||||
void *
|
void *
|
||||||
calloc(size_t numElements, size_t size)
|
calloc(size_t numElements, size_t size)
|
||||||
{
|
{
|
||||||
|
if (size != 0 && numElements > (((size_t)(-1)) / size))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
void *address = malloc(numElements * size);
|
void *address = malloc(numElements * size);
|
||||||
if (address != NULL)
|
if (address != NULL)
|
||||||
memset(address, 0, numElements * size);
|
memset(address, 0, numElements * size);
|
||||||
|
|||||||
Reference in New Issue
Block a user