From 426534e066cac16a71a1affc877326efd3e4956a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20O=2E=20Sel=C3=A5sdal?= Date: Tue, 4 Aug 2026 00:57:08 +0200 Subject: [PATCH] pool: guard against overflow --- src/pool.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pool.c b/src/pool.c index a2264f1..e9cd234 100644 --- a/src/pool.c +++ b/src/pool.c @@ -19,7 +19,8 @@ APool *apool_create_ex(Allocator *allocator, U32 n_elements, U32 element_size, U pool->start = NULL; if (size != APOOL_AUTOGROW) { - U32 total_size = n_elements * size; // Note(nos): guard against unreasonable sizes + Assert(n_elements <= U32_Max / size ); + U32 total_size = n_elements * size; U8 * start = allocator_push(allocator, total_size, align); for (U32 i = 0; i < total_size; i += size) { APoolElement *element = (APoolElement *)&start[i]; @@ -47,6 +48,8 @@ void *apool_alloc(APool *pool) void apool_free(APool *pool, void *ptr) { if (ptr != NULL) { + Assert((U8 *)ptr >= pool->start); + APoolElement *element = (APoolElement *)ptr; element->next = pool->free_list; pool->free_list = element;