From 9bb8e5cd549eca189ce183f40f771c2a614ea8f6 Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Sat, 21 Feb 2026 16:38:48 +0100 Subject: Add make sanitize target for AddressSanitizer leak checks Add EXTRA variable to both Makefiles for passing extra compiler flags. Update _s_crashes() to detect ASan-intercepted crashes (non-zero exit) and suppress ASan noise from intentional NULL dereference tests. --- tests/inc/test_utils.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'tests/inc') diff --git a/tests/inc/test_utils.h b/tests/inc/test_utils.h index 0cb6655..56dbb94 100644 --- a/tests/inc/test_utils.h +++ b/tests/inc/test_utils.h @@ -115,21 +115,29 @@ _s_check_eq_int (const char *label, int got, int expected) /* ── crash detection ──────────────────────────────────────────────── */ -/** Run @p fn in a child process; return 1 if it was killed by a signal. */ +/** + * Run @p fn in a child process; return 1 if it crashed. + * Detects both raw signals (SEGV, BUS) and ASan-intercepted crashes + * (which exit with non-zero instead of being killed by a signal). + */ static int _s_crashes (void (*fn) (void)) { pid_t pid; int status; + fflush (stdout); pid = fork (); if (pid == 0) { + /* Suppress ASan crash reports from intentional NULL dereferences. */ + close (STDERR_FILENO); fn (); _exit (0); } waitpid (pid, &status, 0); - return (WIFSIGNALED (status)); + return (WIFSIGNALED (status) + || (WIFEXITED (status) && WEXITSTATUS (status) != 0)); } static void -- cgit v1.2.3