aboutsummaryrefslogtreecommitdiffstats
path: root/libtest/libtest_free.c
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2026-05-15 20:53:25 +0200
committerMattias Andrée <m@maandree.se>2026-05-15 20:53:25 +0200
commit193d39d9b78a9e3c0c257b2e1e9f9dd4a7a13349 (patch)
treec3b4eaf8df53babc7e37df4384d1be3be1cd9186 /libtest/libtest_free.c
parentFix some minor issues (diff)
downloadlibrecrypt-193d39d9b78a9e3c0c257b2e1e9f9dd4a7a13349.tar.gz
librecrypt-193d39d9b78a9e3c0c257b2e1e9f9dd4a7a13349.tar.bz2
librecrypt-193d39d9b78a9e3c0c257b2e1e9f9dd4a7a13349.tar.xz
Misc
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'libtest/libtest_free.c')
-rw-r--r--libtest/libtest_free.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libtest/libtest_free.c b/libtest/libtest_free.c
index 5592e0a..d46218e 100644
--- a/libtest/libtest_free.c
+++ b/libtest/libtest_free.c
@@ -39,12 +39,18 @@ libtest_free(void *ptr, enum libtest_zero_check zero_checking)
assert(mem->origin != FROM_MMAP_ANON);
/* Delist allocation */
+ SPINLOCK(libtest_allocs_list_spinlock);
if (!libtest_kill_malloc_tracking) {
- SPINLOCK(libtest_allocs_list_spinlock);
mem->prev->next = mem->next;
mem->next->prev = mem->prev;
- SPINUNLOCK(libtest_allocs_list_spinlock);
}
+ for (i = 0u; i < libtest_npretends; i++) {
+ if (libtest_pretend_list[i] == ptr) {
+ libtest_pretend_list[i] = libtest_pretend_list[--libtest_npretends];
+ break;
+ }
+ }
+ SPINUNLOCK(libtest_allocs_list_spinlock);
/* Check memory is zeroed */
if (zero_checking && libtest_expect_zeroed && !mem->accept_leakage) {