[PATCH v5 08/12] LD: Guard `new_afile' result with assertions

Maciej W. Rozycki macro@orcam.me.uk
Wed Jan 28 10:55:35 GMT 2026


From: Maciej W. Rozycki <macro@redhat.com>

Calls to `new_afile' can in principle return a NULL pointer.  However 
in `lookup_name' we dereference the pointer returned without validating 
it first.  Since it's not supposed to be NULL there except where we have 
hit an internal consistency issue just add an assertion for meaningful 
output rather than just a segfault.

For consistency update `cmdline_load_object_only_section' replacing a 
call to `abort' with the same assertion.
---
This has been previously approved, but it makes sense to group it with 
later patches from this series.

No change from v4 (10/14), 
<https://inbox.sourceware.org/binutils/alpine.DEB.2.21.2601121644140.12909@angie.orcam.me.uk/>.

No change from v3 (14/18), 
<https://inbox.sourceware.org/binutils/alpine.DEB.2.21.2511192359470.57987@angie.orcam.me.uk/>.

No change from v2 (12/16), 
<https://inbox.sourceware.org/binutils/alpine.DEB.2.21.2511061740420.25436@angie.orcam.me.uk/>.

New change in v2.
---
 ld/ldlang.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

binutils-ld-lookup-name-assert.diff
Index: binutils-gdb/ld/ldlang.c
===================================================================
--- binutils-gdb.orig/ld/ldlang.c
+++ binutils-gdb/ld/ldlang.c
@@ -2994,6 +2994,7 @@ lookup_name (const char *name)
       *stat_ptr->tail = rest;
       if (*tail == NULL)
 	stat_ptr->tail = tail;
+      ASSERT (search != NULL);
     }
 
   /* If we have already added this file, or this file is not real
@@ -11139,8 +11140,7 @@ cmdline_load_object_only_section (const
   lang_input_statement_type *entry
     = new_afile (name, lang_input_file_is_file_enum, NULL, NULL);
 
-  if (!entry)
-    abort ();
+  ASSERT (entry != NULL);
 
   ldfile_open_file (entry);
 


More information about the Binutils mailing list