From 2181fcf369c54540b005e90ee45628b1e0bdf60d Mon Sep 17 00:00:00 2001 From: 安静的卡尔 Date: Thu, 10 Jan 2019 16:24:33 +0800 Subject: out of bouds --- tinyalloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tinyalloc.c b/tinyalloc.c index 9b07461..066fecc 100644 --- a/tinyalloc.c +++ b/tinyalloc.c @@ -143,6 +143,7 @@ bool ta_init() { block->next = block + 1; block++; } + block->next = NULL; return true; } @@ -174,7 +175,7 @@ static Block *alloc_block(size_t num) { size_t top = heap->top; num = (num + TA_ALIGN - 1) & -TA_ALIGN; while (ptr != NULL) { - const int is_top = (size_t)ptr->addr + ptr->size >= top; + const int is_top = ((size_t)ptr->addr + ptr->size >= top) && ((size_t)ptr->addr + num <= TA_HEAP_LIMIT); if (is_top || ptr->size >= num) { if (prev != NULL) { prev->next = ptr->next; -- cgit v1.2.3