gas .xstabs missing string results in a segfault

Alan Modra amodra@gmail.com
Thu Jan 1 21:46:43 GMT 2026


	* stabs.c (s_xstab): Check result of demand_copy_C_string.
	(s_stab_generic): Remove duplicate warning and ignore_r_o_l
	after demand_copy_C_string error.

diff --git a/gas/stabs.c b/gas/stabs.c
index 331a72f6753..c7797bc01e4 100644
--- a/gas/stabs.c
+++ b/gas/stabs.c
@@ -259,11 +259,7 @@ s_stab_generic (int what,
 
       string = demand_copy_C_string (&length);
       if (string == NULL)
-	{
-	  as_warn (_(".stab%c: missing string"), what);
-	  ignore_rest_of_line ();
-	  goto out2;
-	}
+	goto out2;
       /* FIXME: We should probably find some other temporary storage
 	 for string, rather than leaking memory if someone else
 	 happens to use the notes obstack.  */
@@ -402,6 +398,9 @@ s_xstab (int what)
   char *stab_secname, *stabstr_secname;
 
   stab_secname = demand_copy_C_string (&length);
+  if (stab_secname == NULL)
+    /* as_bad error has been reported.  */
+    return;
   SKIP_WHITESPACE ();
   if (*input_line_pointer == ',')
     {

-- 
Alan Modra


More information about the Binutils mailing list