free_sensitive() asks the allocator for the usable size of the buffer
before zeroing it, so it is one more path that has to cope with the
ZERO_SIZE_PTR that zero-sized allocations return. The sandbox got this
wrong until the previous commit and only ASAN noticed, so let's have the
allocator selftest walk over it.

Assisted-by: Claude:opus-5-1m
Signed-off-by: Ahmad Fatoum <[email protected]>
---
 test/self/malloc.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/test/self/malloc.c b/test/self/malloc.c
index 1ec351c3efe5..14d936f96a45 100644
--- a/test/self/malloc.c
+++ b/test/self/malloc.c
@@ -140,6 +140,11 @@ static void test_malloc(void)
        __expect_cond(p == ZERO_SIZE_PTR, true, "get ZERO_SIZE_PTR for 0-size 
buffers", __func__, __LINE__);
 
        free(p);
-       free(tmp);
+
+       /*
+        * free_sensitive() asks the allocator for the usable size before it
+        * zeroes the buffer, so ZERO_SIZE_PTR has to survive that path too
+        */
+       free_sensitive(tmp);
 }
 bselftest(core, test_malloc);
-- 
2.47.3


Reply via email to