diff --git a/tools/fftw-wisdom.c b/tools/fftw-wisdom.c index 46a13698..9dbcc990 100644 --- a/tools/fftw-wisdom.c +++ b/tools/fftw-wisdom.c @@ -215,14 +215,21 @@ 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"); + exit(EXIT_FAILURE); + } strcpy(output_fname, my_optarg); } break;