Uninitialized vd_nodename
authorAlan Modra <amodra@gmail.com>
Sat, 22 Aug 2015 03:54:34 +0000 (13:24 +0930)
committerAlan Modra <amodra@gmail.com>
Sat, 22 Aug 2015 06:54:52 +0000 (16:24 +0930)
Belt and braces fix.  Either of the changes here is sufficient to
ensure vd_nodename is initialized properly.

* elf.c (_bfd_elf_slurp_version_tables): Always init vd_nodename.
Don't copy fields not set by _bfd_elf_swap_verdef_in.

bfd/ChangeLog
bfd/elf.c

index dcd0e88..47b7642 100644 (file)
@@ -1,3 +1,8 @@
+2015-08-22  Alan Modra  <amodra@gmail.com>
+
+       * elf.c (_bfd_elf_slurp_version_tables): Always init vd_nodename.
+       Don't copy fields not set by _bfd_elf_swap_verdef_in.
+
 2015-08-19  Jiong Wang  <jiong.wang@arm.com>
 
        * elfnn-aarch64.c (IS_AARCH64_TLS_RELOC): Recognize new relocation
index f20679e..f8e1295 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -7871,7 +7871,7 @@ error_return_verref:
            goto error_return_bad_verdef;
 
          iverdef = &iverdefarr[(iverdefmem.vd_ndx & VERSYM_VERSION) - 1];
-         memcpy (iverdef, &iverdefmem, sizeof (Elf_Internal_Verdef));
+         memcpy (iverdef, &iverdefmem, offsetof (Elf_Internal_Verdef, vd_bfd));
 
          iverdef->vd_bfd = abfd;
 
@@ -7920,6 +7920,7 @@ error_return_verref:
                          ((bfd_byte *) everdaux + iverdaux->vda_next));
            }
 
+         iverdef->vd_nodename = NULL;
          if (iverdef->vd_cnt)
            iverdef->vd_nodename = iverdef->vd_auxptr->vda_nodename;