From: Dmitry Goncharov Date: Sun, 21 Apr 2024 17:34:12 +0000 (-0400) Subject: [SV 65324] disable_builtins: Don't dereference NULL suffix_file X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=40664fef1fa079280487500d6c347472bd2961d5;p=thirdparty%2Fmake.git [SV 65324] disable_builtins: Don't dereference NULL suffix_file Make crashes when -r and MAKEFLAGS= are specified on the command line. On startup make begins to process command line arguments. During processing of "MAKEFLAGS=" make calls reset_makeflags, which in turn calls disable_builtins, which dereferences null suffix_file. Here is the backtrace. 0 disable_builtins main.c:3482 1 reset_makeflags main.c:3104 2 set_special_var variable.c:1325 3 do_variable_definition variable.c:1693 4 try_variable_definition variable.c:1889 5 handle_non_switch_argument main.c:3021 6 decode_switches main.c:3150 7 main main.c:1621 * src/main.c (disable_builtins): Avoid dereferencing null suffix_file. * tests/scripts/features/suffixrules: Add a test. --- diff --git a/src/main.c b/src/main.c index 15104212..bf3829a0 100644 --- a/src/main.c +++ b/src/main.c @@ -3473,7 +3473,7 @@ void disable_builtins () if (no_builtin_rules_flag && ! old_builtin_rules_flag) { old_builtin_rules_flag = 1; - if (suffix_file->builtin) + if (suffix_file && suffix_file->builtin) { free_dep_chain (suffix_file->deps); suffix_file->deps = 0; diff --git a/tests/scripts/features/suffixrules b/tests/scripts/features/suffixrules index 6c562efc..46b09c5c 100644 --- a/tests/scripts/features/suffixrules +++ b/tests/scripts/features/suffixrules @@ -178,5 +178,12 @@ MAKEFLAGS += -r unlink('hello.c', 'hello.o'); +# sv 65324. +# Crash in disable_builtins. +run_make_test(q! +all:; +!, '-r MAKEFLAGS=', "#MAKE#: 'all' is up to date.\n"); + + # Complete 1;