This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix buffer overflows in readelf ia64 unwind printing


Hi!

Noticed this when running ia64 make check today, unwind-ok test
failed, printed
        X2:spill_reg(t=9,reg=ar.bspstorr17,treg=r17)
instead of the desired
        X2:spill_reg(t=9,reg=ar.bspstore,treg=r17)
sizeof("ar.bspstore") is 12, so it is just 2 bytes overflow,
but as many similar macros use size 20, I have used that as well.
Ok to commit?

2005-07-21  Jakub Jelinek  <jakub@redhat.com>

	* unwind-ia64.c (UNW_DEC_SPILL_SPREL, UNW_DEC_SPILL_PSPREL,
	UNW_DEC_RESTORE, UNW_DEC_SPILL_REG): Increase {,ab,t}regname
	buffer sizes.

--- binutils/unwind-ia64.c.jj	2005-05-13 23:44:25.000000000 +0200
+++ binutils/unwind-ia64.c	2005-07-21 00:23:06.000000000 +0200
@@ -371,7 +371,7 @@ typedef bfd_vma unw_word;
 #define UNW_DEC_SPILL_SPREL(fmt, t, abreg, spoff, arg)				\
   do										\
     {										\
-      char regname[10];								\
+      char regname[20];								\
 										\
       unw_print_abreg (regname, abreg);						\
       printf ("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n",			\
@@ -382,7 +382,7 @@ typedef bfd_vma unw_word;
 #define UNW_DEC_SPILL_PSPREL(fmt, t, abreg, pspoff, arg)			\
   do										\
     {										\
-      char regname[10];								\
+      char regname[20];								\
 										\
       unw_print_abreg (regname, abreg);						\
       printf ("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n",		\
@@ -393,7 +393,7 @@ typedef bfd_vma unw_word;
 #define UNW_DEC_RESTORE(fmt, t, abreg, arg)			\
   do								\
     {								\
-      char regname[10];						\
+      char regname[20];						\
 								\
       unw_print_abreg (regname, abreg);				\
       printf ("\t%s:restore(t=%lu,reg=%s)\n",			\
@@ -404,7 +404,7 @@ typedef bfd_vma unw_word;
 #define UNW_DEC_SPILL_REG(fmt, t, abreg, x, ytreg, arg)		\
   do								\
     {								\
-      char abregname[10], tregname[10];				\
+      char abregname[20], tregname[20];				\
 								\
       unw_print_abreg (abregname, abreg);			\
       unw_print_xyreg (tregname, x, ytreg);			\

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]