diff options
| author | Mark Wielaard <[email protected]> | 2020-11-01 18:51:02 +0100 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2020-11-06 18:39:40 +0100 |
| commit | 86cedebad363184ef5e4e4f51e1ee2f701e32ad3 (patch) | |
| tree | f2245a6acf3890626b7e7e31704187243b0b8624 /libelf/elf_getphdrnum.c | |
| parent | f2272dbefd6dbd67af4d46eb6e748522c0c60d74 (diff) | |
libelf: Set dst to zero on failure in __elf_getphdrnum_rdlock
GCC with -flto finds some (very) unlikely error paths. It flags callers
of __elf_getphdrnum_chk_rdlock with *dst not yet set because an internal
call to __elf_getphdrnum_rdlock might not initialize *dst either in one
particular failure path. The sanity check that __elf_getphdrnum_chk_rdlock
then performs might happen against uninitialized data. So just set *dst
to zero on failure in __elf_getphdrnum_rdlock so any caller can simply
check either the result/error code or whether *dst is zero or not.
Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'libelf/elf_getphdrnum.c')
| -rw-r--r-- | libelf/elf_getphdrnum.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libelf/elf_getphdrnum.c b/libelf/elf_getphdrnum.c index 53617dfc..60ebec58 100644 --- a/libelf/elf_getphdrnum.c +++ b/libelf/elf_getphdrnum.c @@ -44,6 +44,7 @@ __elf_getphdrnum_rdlock (Elf *elf, size_t *dst) if (unlikely (elf->state.elf64.ehdr == NULL)) { /* Maybe no ELF header was created yet. */ + *dst = 0; __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); return -1; } |
