From 2a4be51ba817dcecf130c64f6efff166250bf011 Mon Sep 17 00:00:00 2001 From: "WIN-BOESD0223SG\\user" Date: Thu, 28 May 2026 23:13:31 +0400 Subject: [PATCH 1/2] fix(tools): fix NULL pointer dereference in output_fname allocation --- tools/fftw-wisdom.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/fftw-wisdom.c b/tools/fftw-wisdom.c index 46a13698..d3f9697b 100644 --- a/tools/fftw-wisdom.c +++ b/tools/fftw-wisdom.c @@ -223,6 +223,12 @@ int bench_main(int argc, char *argv[]) else { output_fname = (char *) bench_malloc(sizeof(char) * (strlen(my_optarg) + 1)); + + /* Check for allocation failure to prevent NULL pointer dereference */ + if (!output_fname) { + fprintf(stderr, "fftw-wisdom: out of memory\n"); + exit(EXIT_FAILURE); + } strcpy(output_fname, my_optarg); } break; From c91739f110056016dcfbc459d3908667faeb6285 Mon Sep 17 00:00:00 2001 From: "WIN-BOESD0223SG\\user" Date: Thu, 28 May 2026 23:20:31 +0400 Subject: [PATCH 2/2] fix: set output_fname to NULL after freeing to prevent dangling pointer --- tools/fftw-wisdom.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/fftw-wisdom.c b/tools/fftw-wisdom.c index d3f9697b..9dbcc990 100644 --- a/tools/fftw-wisdom.c +++ b/tools/fftw-wisdom.c @@ -215,15 +215,16 @@ int bench_main(int argc, char *argv[]) break; case 'o': - if (output_fname) + if (output_fname){ bench_free(output_fname); - + output_fname = NULL; + } if (!strcmp(my_optarg, "-")) output_fname = 0; else { output_fname = (char *) bench_malloc(sizeof(char) * (strlen(my_optarg) + 1)); - + /* Check for allocation failure to prevent NULL pointer dereference */ if (!output_fname) { fprintf(stderr, "fftw-wisdom: out of memory\n");