Fix seg-fault in the BFD parsing a corrupt input binary.
authorNick Clifton <nickc@redhat.com>
Wed, 21 Jun 2017 12:18:46 +0000 (13:18 +0100)
committerNick Clifton <nickc@redhat.com>
Wed, 21 Jun 2017 12:18:46 +0000 (13:18 +0100)
PR binutils/21645
* reloc.c (bfd_generic_get_relocated_section_contents): Fail if
bfd_get_full_section_contents returns no contents.

bfd/ChangeLog
bfd/coff-sh.c
bfd/reloc.c

index c92ed67..1d9ba02 100644 (file)
@@ -1,5 +1,11 @@
 2017-06-21  Nick Clifton  <nickc@redhat.com>
 
+       PR binutils/21645
+       * reloc.c (bfd_generic_get_relocated_section_contents): Fail if
+       bfd_get_full_section_contents returns no contents.
+
+2017-06-21  Nick Clifton  <nickc@redhat.com>
+
        PR binutils/21638
        * vms-alpha.c (_bfd_vms_slurp_egsd): Check for an undersized
        record.
index dd8090c..d76f98a 100644 (file)
@@ -2910,6 +2910,7 @@ sh_coff_get_relocated_section_contents (bfd *output_bfd,
   struct internal_reloc *internal_relocs = NULL;
   struct internal_syment *internal_syms = NULL;
 
+fprintf (stderr, "DATA = %p\n", data);
   /* We only need to handle the case of relaxing, or of having a
      particular set of section contents, specially.  */
   if (relocatable
index 8dedfe8..ee01d88 100644 (file)
@@ -8126,6 +8126,9 @@ bfd_generic_get_relocated_section_contents (bfd *abfd,
   if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
     return NULL;
 
+  if (data == NULL)
+    return NULL;
+
   if (reloc_size == 0)
     return data;