buffer overflow in print_symname

Message ID ZEBzqwgJEiqZ3AaD@squeak.grove.modra.org
State Accepted
Headers
Series buffer overflow in print_symname |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Alan Modra April 19, 2023, 11:05 p.m. UTC
  * ecoff.c (_bfd_ecoff_slurp_symbolic_info): Zero terminate
	string sections.
  

Patch

diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index fb6fcade913..676b8d84017 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -599,6 +599,12 @@  _bfd_ecoff_slurp_symbolic_info (bfd *abfd,
   FIX (cbExtOffset, iextMax, external_ext, void *);
 #undef FIX
 
+  /* Ensure string sections are zero terminated.  */
+  if (debug->ss)
+    debug->ss[internal_symhdr->issMax - 1] = 0;
+  if (debug->ssext)
+    debug->ssext[internal_symhdr->issExtMax - 1] = 0;
+
   /* I don't want to always swap all the data, because it will just
      waste time and most programs will never look at it.  The only
      time the linker needs most of the debugging information swapped