From 2ce82eea5c7d5e05a3e3d220c19bbdac830e7dba Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Wed, 25 Jun 2025 17:49:56 -0400 Subject: pkmem: handle overflows & leaks in tests --- pkmem.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'pkmem.h') diff --git a/pkmem.h b/pkmem.h index 2339d22..461fc64 100644 --- a/pkmem.h +++ b/pkmem.h @@ -507,10 +507,11 @@ pk_delete_bkt(const void* ptr, size_t sz, struct pk_membucket* bkt) { #ifdef PK_MEMORY_FORCE_MALLOC #if defined(__cplusplus) - return std::free(const_cast(ptr)); + std::free(const_cast(ptr)); #else - return free((void*)ptr); + free((void*)ptr); #endif + return; #endif size_t i, k; mtx_lock(&bkt->mtx); @@ -567,17 +568,16 @@ pk_delete_bkt(const void* ptr, size_t sz, struct pk_membucket* bkt) struct pk_memblock* beforeBlk = NULL; struct pk_memblock* afterBlk = NULL; for (i = bkt->block_head_r+1; i > 0 ; --i) { - k = pk_memblock_blocks_idx(bkt, i-2); + k = pk_memblock_blocks_idx(bkt, (i-1)); tmp_blk = &bkt->blocks[k]; if (tmp_blk->data + tmp_blk->size == ptr) { beforeBlk = tmp_blk; + break; } - tmp_blk -= 1; if (i <= bkt->block_head_r+1 && tmp_blk->data == afterPtr) { afterBlk = tmp_blk; - break; + continue; } - tmp_blk += 1; if (tmp_blk->data < (char*)ptr) { break; } -- cgit v1.2.3