diff mbox

Fix stormy16 WRT sprintf warnings

Message ID 93c66b76-fbc7-6264-7dfb-05f4eca7ebeb@redhat.com
State New
Headers show

Commit Message

Jeff Law Oct. 26, 2016, 3:37 p.m. UTC
[ There's at least one more port that has the exact same problem. ]

stormy16's ctor/dtor output routines have this:

   char buf[16];

      sprintf (buf, ".ctors.%.5u",
                /* Invert the numbering so the linker puts us in the proper
                   order; constructors are run from right to left, and the
                   linker sorts in increasing order.  */
                MAX_INIT_PRIORITY - priority);

Which can overflow if depending on MAX_INIT_PRIORITY - priority.  The 
given formatting string does _not_ limit the total number of characters 
printed!  If that was the intent, the formatting string is wrong.

Anyway, the fix is trivial, increase the buffer.  Installed on the trunk.

Jeff
commit 41beb61397a504733a64fc6ad317d657f6b556c5
Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Wed Oct 26 15:36:48 2016 +0000

    	* config/stormy16/stormy16.c (xstormy16_asm_output_destrutor): Increase
    	buffer size.
    	(xstormy16_asm_output_constructor): Likewise.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241564 138bc75d-0d04-0410-961f-82ee72b054a4
diff mbox

Patch

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7d869b1..d778e95 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@ 
 2016-10-26  Jeff Law  <law@redhat.com>
 
+	* config/stormy16/stormy16.c (xstormy16_asm_output_destrutor): Increase
+	buffer size.
+	(xstormy16_asm_output_constructor): Likewise.
+
 	* config/pa/pa.c (pa_asm_output_mi_thunk): Increase buffer
 	size.
 
diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c
index 531a7e9..f74b4d9 100644
--- a/gcc/config/stormy16/stormy16.c
+++ b/gcc/config/stormy16/stormy16.c
@@ -1618,7 +1618,7 @@  static void
 xstormy16_asm_out_destructor (rtx symbol, int priority)
 {
   const char *section = ".dtors";
-  char buf[16];
+  char buf[18];
 
   /* ??? This only works reliably with the GNU linker.  */
   if (priority != DEFAULT_INIT_PRIORITY)
@@ -1640,7 +1640,7 @@  static void
 xstormy16_asm_out_constructor (rtx symbol, int priority)
 {
   const char *section = ".ctors";
-  char buf[16];
+  char buf[18];
 
   /* ??? This only works reliably with the GNU linker.  */
   if (priority != DEFAULT_INIT_PRIORITY)