From c68b1842bdb3cedce0cac7da43045c3788085a91 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 15 Mar 2021 11:00:44 +0100 Subject: ld: don't chance overrunning PE .reloc section content The allocation of reloc_d doesn't take reloc_s->size into account. There is already padding being emitted up to the allocated size. While reloc_s->size ought to still be zero at this point anyway (and hence the code being deleted would have been just dead), don't risk writing past the actual allocation. --- ld/ChangeLog | 4 ++++ ld/pe-dll.c | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index fe68e6ded9b..01b93c52cb9 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,7 @@ +2021-03-15 Jan Beulich + + * pe-dll.c (generate_reloc): Drop padding to reloc_s->size. + 2021-03-12 Alan Modra * Makefile.am (ALL_EMULATION_SOURCES): Move riscv files to.. diff --git a/ld/pe-dll.c b/ld/pe-dll.c index afcf6fea93e..eaecb951efd 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -1752,9 +1752,6 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info) if (page_ptr != (bfd_vma) -1) bfd_put_32 (abfd, reloc_sz - page_ptr, reloc_d + page_ptr + 4); - - while (reloc_sz < reloc_s->size) - reloc_d[reloc_sz++] = 0; } /* Given the exiting def_file structure, print out a .DEF file that -- cgit v1.2.1