]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gas .xstabs missing string results in a segfault
authorAlan Modra <amodra@gmail.com>
Thu, 1 Jan 2026 21:51:31 +0000 (08:21 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 1 Jan 2026 21:51:31 +0000 (08:21 +1030)
Found by oss-fuzz.

* 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.

gas/stabs.c

index 331a72f6753cbea077462301885a2e20fdd14d64..c7797bc01e49b1afecfa451ce54d6ab0f781dc14 100644 (file)
@@ -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 == ',')
     {