[binutils-gdb] Don't write uninitialised data in .note.gnu.property

Alan Modra amodra@sourceware.org
Wed Apr 8 13:04:09 GMT 2026


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7376294773866a66031f91dd3272669ef41d6b04

commit 7376294773866a66031f91dd3272669ef41d6b04
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Apr 8 08:57:39 2026 +0930

    Don't write uninitialised data in .note.gnu.property
    
    Seen when running the binutils x86-64 pr23494 tests.
    _bfd_elf_convert_gnu_properties doesn't initialise its "contents"
    buffer, and elf_write_gnu_properties doesn't write to padding.
    Fix this by initialising the padding and then dispense with zeroing
    contents in _bfd_elf_link_setup_gnu_properties.
    
            * elf-properties.c (elf_write_gnu_properties): Init padding.
            (_bfd_elf_link_setup_gnu_properties): Don't init contents.

Diff:
---
 bfd/elf-properties.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c
index 988b7d0dd02..e0a830704fd 100644
--- a/bfd/elf-properties.c
+++ b/bfd/elf-properties.c
@@ -670,7 +670,12 @@ elf_write_gnu_properties (struct bfd_link_info *info,
       size += datasz;
 
       /* Align each property.  */
-      size = (size + (align_size - 1)) & ~ (align_size - 1);
+      datasz = -size & (align_size - 1);
+      if (datasz)
+	{
+	  memset (contents + size, 0, datasz);
+	  size += datasz;
+	}
     }
 }
 
@@ -933,7 +938,7 @@ _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info)
 
       /* Update .note.gnu.property section now.  */
       sec->size = size;
-      contents = (bfd_byte *) bfd_zalloc (first_pbfd, size);
+      contents = bfd_alloc (first_pbfd, size);
 
       elf_write_gnu_properties (info, first_pbfd, contents, list, size,
 				align_size);


More information about the Binutils-cvs mailing list