]> git.ipfire.org Git - thirdparty/make.git/commitdiff
[SV 65324] disable_builtins: Don't dereference NULL suffix_file
authorDmitry Goncharov <dgoncharov@users.sf.net>
Sun, 21 Apr 2024 17:34:12 +0000 (13:34 -0400)
committerPaul Smith <psmith@gnu.org>
Mon, 6 May 2024 18:11:17 +0000 (14:11 -0400)
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.

src/main.c
tests/scripts/features/suffixrules

index 15104212511884952fe7bde7386679017be310d9..bf3829a0fc74457498f6f81a9713bcc34c26e817 100644 (file)
@@ -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;
index 6c562efc3a98983211c23d0d8a16f814e9a4c151..46b09c5c6ebef523770c49ad4e625ca59f9224f9 100644 (file)
@@ -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;