URL: <https://savannah.gnu.org/bugs/?59870>
Summary: Segmentation Fault on GNU Project: make Submitted by: fabse333 Submitted on: Thu 14 Jan 2021 09:45:21 AM UTC Severity: 3 - Normal Item Group: Bug Status: None Privacy: Public Assigned to: None Open/Closed: Open Discussion Lock: Any Component Version: SCM Operating System: POSIX-Based Fixed Release: None Triage Status: None _______________________________________________________ Details: The attached makefile will cause a Segmentation fault on GNU make 4.2 on Debian and also when building the newest newest version from the GitHub mirror. The issue is that in the method "record_target_var" in read.c, the function "assign_variable_definition" (see https://github.com/mirror/make/blob/4.2/read.c#L1864 ) returns 0 on this MAKEFILE. Even when the Comment states "I don't think this can fail,...". ;-) While this return value is checked with an assert statement, the asserts are not included on release builds (e.g. the one I have installed on my Debian 10 Buster). Assert can also be disabled by setting the DNDEBUG Cflag on the ./configure command for local testing: ./configure CFLAGS="-g -DNDEBUG" The segmentation fault is then an exception when this instruction is executed where RDX is set to 0: movzx eax, byte ptr [rdx + 0x2f] This should correspond to this line where the origin field of v is accessed: https://github.com/mirror/make/blob/4.2/read.c#L1867 Steps to reproduce: * make -f MAKEFILE I don't see any security concerns related with this bug, so I set Privacy of this ticket to Public. _______________________________________________________ File Attachments: ------------------------------------------------------- Date: Thu 14 Jan 2021 09:45:21 AM UTC Name: MAKEFILE Size: 8B By: fabse333 <http://savannah.gnu.org/bugs/download.php?file_id=50714> _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?59870> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/