Always pass a valid section header offset to elf_parse_notes
authorGary Benson <gbenson@redhat.com>
Tue, 29 Nov 2016 11:14:02 +0000 (11:14 +0000)
committerGary Benson <gbenson@redhat.com>
Fri, 2 Dec 2016 11:34:58 +0000 (11:34 +0000)
_bfd_elf_make_section_from_shdr calls elf_parse_notes with an offset
of -1.  This argument is used to calculate Elf_Internal_Note.descpos,
which ends up set to a positive but meaningless value.  This commit
updates _bfd_elf_make_section_from_shdr to pass the correct offset to
elf_parse_notes, making Elf_Internal_Note.descpos correct in all cases.

bfd/ChangeLog:

* elf.c (_bfd_elf_make_section_from_shdr): Pass offset to
elf_parse_notes.

bfd/ChangeLog
bfd/elf.c

index cef1c4b6abac8e556af02c0c49cebc7c107d6e96..d061e66a2609f875ff444c6b5bf64675f03cc435 100644 (file)
@@ -1,3 +1,8 @@
+2016-12-02  Gary Benson  <gbenson@redhat.com>
+
+       * elf.c (_bfd_elf_make_section_from_shdr): Pass offset to
+       elf_parse_notes.
+
 2016-12-02  Josh Conner  <joshconner@google.com>
 
        * configure.tgt: Add support for fuchsia (OS).
index 3d1a28aa7eef24abcbe04040e309158a6db5f851..98be1db6d789728539e047fff4455f3195cc5dda 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -1062,7 +1062,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
       if (!bfd_malloc_and_get_section (abfd, newsect, &contents))
        return FALSE;
 
-      elf_parse_notes (abfd, (char *) contents, hdr->sh_size, -1);
+      elf_parse_notes (abfd, (char *) contents, hdr->sh_size, hdr->sh_offset);
       free (contents);
     }