gprof: sprintf sanitizer null destination pointer

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


	* basic_blocks.c (annotate_with_count): Use output of sprintf
	rather than strlen.

diff --git a/gprof/basic_blocks.c b/gprof/basic_blocks.c
index 6073f556f47..7fbba8c03fa 100644
--- a/gprof/basic_blocks.c
+++ b/gprof/basic_blocks.c
@@ -360,8 +360,7 @@ annotate_with_count (char *buf, unsigned int width, int line_num, void *arg)
 	 execution count (if bb_annotate_all_lines is set).  */
       if (b->is_func)
 	{
-	  sprintf (p, "%lu", b->ncalls);
-	  p += strlen (p);
+	  p += sprintf (p, "%lu", b->ncalls);
 	  last_count = b->ncalls;
 	  last_print = last_count;
 	  ncalls = b->ncalls;
@@ -370,8 +369,7 @@ annotate_with_count (char *buf, unsigned int width, int line_num, void *arg)
       else if (bb_annotate_all_lines
 	       && b->bb_addr[0] && b->bb_addr[0] > b->addr)
 	{
-	  sprintf (p, "%lu", last_count);
-	  p += strlen (p);
+	  p += sprintf (p, "%lu", last_count);
 	  last_print = last_count;
 	  ncalls = last_count;
 	  ncalls_set = 1;
@@ -396,8 +394,7 @@ annotate_with_count (char *buf, unsigned int width, int line_num, void *arg)
 
 	  if (p > tmpbuf)
 	    *p++ = ',';
-	  sprintf (p, "%lu", last_count);
-	  p += strlen (p);
+	  p += sprintf (p, "%lu", last_count);
 
 	  last_print = last_count;
 	}
@@ -410,8 +407,7 @@ annotate_with_count (char *buf, unsigned int width, int line_num, void *arg)
 
       if (bb_annotate_all_lines && p == tmpbuf)
 	{
-	  sprintf (p, "%lu", last_count);
-	  p += strlen (p);
+	  p += sprintf (p, "%lu", last_count);
 	  ncalls = last_count;
 	  ncalls_set = 1;
 	}

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list