IMAGE_SCN_LNK_NRELOC_OVFL
authorAlan Modra <amodra@gmail.com>
Fri, 30 Jul 2021 03:22:19 +0000 (12:52 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 30 Jul 2021 03:45:58 +0000 (13:15 +0930)
From microsoft docs: It is an error if IMAGE_SCN_LNK_NRELOC_OVFL is
set and there are fewer than 0xffff relocations in the section.

* coffcode.h (coff_set_alignment_hook): Sanity check overflow
reloc count.

bfd/coffcode.h

index 9b8798c86313f389d2e1afe75c72bf1a8b384d5f..d2076effb41952d33b368127d519e040f7faa79e 100644 (file)
@@ -1951,6 +1951,12 @@ coff_set_alignment_hook (bfd * abfd ATTRIBUTE_UNUSED,
       coff_swap_reloc_in (abfd, &dst, &n);
       if (bfd_seek (abfd, oldpos, 0) != 0)
        return;
+      if (n.r_vaddr < 0xffff)
+       {
+         _bfd_error_handler (_("%pB: overflow reloc count too small"), abfd);
+         bfd_set_error (bfd_error_bad_value);
+         return;
+       }
       section->reloc_count = hdr->s_nreloc = n.r_vaddr - 1;
       section->rel_filepos += relsz;
     }