From 2823fe54e1cfb232d13214e0c835cd45ed1098a9 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 3 Jun 2022 17:18:55 -0400 Subject: [PATCH] kernel/heap: Check for multiplication overflows in calloc. Logic inspired by musl's. --- src/system/kernel/heap.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/system/kernel/heap.cpp b/src/system/kernel/heap.cpp index 9fb146c3b5..abd9bbdbd9 100644 --- a/src/system/kernel/heap.cpp +++ b/src/system/kernel/heap.cpp @@ -2482,6 +2482,9 @@ realloc(void *address, size_t newSize) void * calloc(size_t numElements, size_t size) { + if (size != 0 && numElements > (((size_t)(-1)) / size)) + return NULL; + void *address = malloc(numElements * size); if (address != NULL) memset(address, 0, numElements * size);