wrstabs: sprintf sanitizer null destination pointer
authorAlan Modra <amodra@gmail.com>
Wed, 2 Aug 2023 22:37:54 +0000 (08:07 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 3 Aug 2023 11:49:54 +0000 (21:19 +0930)
gcc-2.12 seems to be ignoring __attribute__((__returns_nonnull__))
on xmalloc.

* wrstabs.c (stab_method_type): Use stpcpy rather than sprintf
or strcat.

binutils/wrstabs.c

index 234a96f98a3a03f956033e202b36cf362a88afbd..955b610cd59dbcff1f036eb8f338c8b88e19e516 100644 (file)
@@ -1202,17 +1202,21 @@ stab_method_type (void *p, bool domainp, int argcount,
     len += strlen (args[i]);
 
   buf = xmalloc (len);
-
-  sprintf (buf, "#%s,%s", domain, return_type);
+  char *out = buf;
+  *out++ = '#';
+  out = stpcpy (out, domain);
+  *out++ = ',';
+  out = stpcpy (out, return_type);
   free (domain);
   free (return_type);
   for (i = 0; i < argcount; i++)
     {
-      strcat (buf, ",");
-      strcat (buf, args[i]);
+      *out++ = ',';
+      out = stpcpy (out, args[i]);
       free (args[i]);
     }
-  strcat (buf, ";");
+  *out++ = ';';
+  *out = 0;
 
   free (args);