A GElf_Chdr is really an Elf64_Chdr, which has a ch_reserved field,
which is really just there to show there is padding (so the next
fields are properly aligned for their types). A Elf32_Chdr doesn't
have ch_reserved field (because it only contains Word sized fields).

Make sure to initialize the dest ch_reserved field to zero if the src
is a Elf32_Chdr so dest contains all defined bytes, in case it gets
written out

        * libelf/gelf_getchdr.c (gelf_getchdr): Initialize dest
        ch_reserved field to zero.

Signed-off-by: Mark Wielaard <[email protected]>
---
 libelf/gelf_getchdr.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libelf/gelf_getchdr.c b/libelf/gelf_getchdr.c
index 394bf4b3b504..4def80d85712 100644
--- a/libelf/gelf_getchdr.c
+++ b/libelf/gelf_getchdr.c
@@ -53,6 +53,7 @@ gelf_getchdr (Elf_Scn *scn, GElf_Chdr *dest)
       if (chdr == NULL)
        return NULL;
       dest->ch_type = chdr->ch_type;
+      dest->ch_reserved = 0;
       dest->ch_size = chdr->ch_size;
       dest->ch_addralign = chdr->ch_addralign;
     }
-- 
2.56.0

Reply via email to