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
