From 726139a539682b3e8a5014661e5b86c157ed8bf7 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Thu, 11 Dec 2025 15:40:16 +0100 Subject: [PATCH] fuzz: really restrict path for nalloc Ticket: 4125 --- src/tests/fuzz/nallocinc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/tests/fuzz/nallocinc.c b/src/tests/fuzz/nallocinc.c index c625a4dfc9..84dcaca479 100644 --- a/src/tests/fuzz/nallocinc.c +++ b/src/tests/fuzz/nallocinc.c @@ -131,15 +131,17 @@ extern "C" #define NALLOC_PREFIX_MAX 1024 - static void nalloc_restrict_file_prefix(uint8_t levels_up) + __attribute__((noinline)) static void nalloc_restrict_file_prefix(uint8_t levels_up) { - snprintf(nalloc_prefix_dir, PATH_MAX, "%s", __FILE__); +#ifdef NALLOC_ASAN + void *pc = __builtin_return_address(0); + __sanitizer_symbolize_pc(pc, "%s", nalloc_prefix_dir, sizeof(nalloc_prefix_dir) - 1); uint16_t slashes[levels_up]; uint8_t slash_off = 0; // /src/suricata/src/test/fuzz/file.c -3 levels -> /src/suricata/src/ for (uint16_t i = 0; i < PATH_MAX; i++) { if (nalloc_prefix_dir[i] == 0) { - uint32_t cut = slashes[(slash_off + 1) % levels_up]; + uint32_t cut = slashes[slash_off]; nalloc_prefix_dir[cut] = 0; nalloc_prefix = nalloc_prefix_dir; nalloc_prefix_len = cut; @@ -150,6 +152,7 @@ extern "C" slash_off = (slash_off + 1) % levels_up; } } +#endif } // Generic init, using env variables to get parameters