From f94cf0cec34b75aefe9a1df1e3cc05d9a40f0415 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gustaf=20Alh=C3=A4ll?= <gustaf@hanicef.me>
Date: Thu, 20 Mar 2025 20:42:19 +0100
Subject: [PATCH] Fix ASAN poisoning

---
 src/z_zone.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/z_zone.c b/src/z_zone.c
index 9370bf4e3..dabd68dfa 100644
--- a/src/z_zone.c
+++ b/src/z_zone.c
@@ -446,6 +446,7 @@ void Z_IterateTags(INT32 lowtag, INT32 hightag, boolean (*iterfunc)(void *))
 
 	for (block = head.next; block != &head; block = next)
 	{
+		ASAN_UNPOISON_MEMORY_REGION(block, sizeof(memblock_t));
 		next = block->next; // get link before possibly freeing
 
 		if (block->tag >= lowtag && block->tag <= hightag)
@@ -454,6 +455,8 @@ void Z_IterateTags(INT32 lowtag, INT32 hightag, boolean (*iterfunc)(void *))
 			boolean free = iterfunc(mem);
 			if (free)
 				Z_Free(mem);
+			else
+				ASAN_POISON_MEMORY_REGION(block, sizeof(memblock_t));
 		}
 	}
 }
@@ -575,7 +578,7 @@ void Z_CheckHeap(INT32 i)
 #endif
 				);
 		}
-		ASAN_POISON_MEMORY_REGION(block, sizeof(memblock_t));
+		ASAN_UNPOISON_MEMORY_REGION(block, sizeof(memblock_t));
 	}
 }
 
-- 
GitLab