]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Import patch from mainline to fix an address violation when parsing a corrupt PE...
authorNick Clifton <nickc@redhat.com>
Thu, 14 Sep 2017 10:27:40 +0000 (11:27 +0100)
committerNick Clifton <nickc@redhat.com>
Thu, 14 Sep 2017 10:27:40 +0000 (11:27 +0100)
PR binutils/22113
* peXXigen.c (pe_print_idata): Extend check for HintName vector
entries.

bfd/ChangeLog
bfd/peXXigen.c

index aca2459d46e76b71f1a09c369b77881d7882a9a0..0aeefda8089b0bb65c5e12c2c94fdb93f57bf9ca 100644 (file)
@@ -1,3 +1,11 @@
+2017-09-14  Nick Clifton  <nickc@redhat.com>
+
+       Import from mainline:
+
+       PR binutils/22113
+       * peXXigen.c (pe_print_idata): Extend check for HintName vector
+       entries.
+
 2017-08-21  Hans-Peter Nilsson  <hp@bitrange.com>
 
        Import from mainline:
index a18e0b26792ccba6dc245f5d78f8718bdc31684a..f538c75e1134f8bce884d23f009f54b5a6468bcb 100644 (file)
@@ -1514,7 +1514,7 @@ pe_print_idata (bfd * abfd, void * vfile)
                         member_high, member,
                         WithoutHighBit (member_high), member);
              /* PR binutils/17512: Handle corrupt PE data.  */
-             else if (amt + 2 >= datasize)
+             else if (amt >= datasize || amt + 2 >= datasize)
                fprintf (file, _("\t<corrupt: 0x%04lx>"), member);
              else
                {
@@ -1548,11 +1548,12 @@ pe_print_idata (bfd * abfd, void * vfile)
                break;
 
              amt = member - adj;
+
              if (HighBitSet (member))
                fprintf (file, "\t%04lx\t %4lu  <none>",
                         member, WithoutHighBit (member));
              /* PR binutils/17512: Handle corrupt PE data.  */
-             else if (amt + 2 >= datasize)
+             else if (amt >= datasize || amt + 2 >= datasize)
                fprintf (file, _("\t<corrupt: 0x%04lx>"), member);
              else
                {