buffer overflow in print_symname
Alan Modra
amodra@gmail.com
Wed Apr 19 23:05:15 GMT 2023
* ecoff.c (_bfd_ecoff_slurp_symbolic_info): Zero terminate
string sections.
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
--
Alan Modra
Australia Development Lab, IBM
More information about the Binutils
mailing list