wrstabs: sprintf sanitizer null destination pointer

Alan Modra amodra@gmail.com
Thu Aug 3 11:43:42 GMT 2023


gcc-2.12 seems to be ignoring __attribute__((__returns_nonnull__))
on xmalloc.

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

diff --git a/binutils/wrstabs.c b/binutils/wrstabs.c
index 234a96f98a3..955b610cd59 100644
--- a/binutils/wrstabs.c
+++ b/binutils/wrstabs.c
@@ -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);
 

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list