diff options
| author | Mark Wielaard <mark@klomp.org> | 2020-05-09 03:41:56 +0200 |
|---|---|---|
| committer | Mark Wielaard <mark@klomp.org> | 2020-05-14 14:30:57 +0200 |
| commit | 59587b33d472ee809250ffba77e38030939fc519 (patch) | |
| tree | 21308ef0fdff2d479e5897fcc8df2c7931a7bef7 /libelf | |
| parent | 2c167d49aa6db14a458bc8c33717efdd965c04c3 (diff) | |
| download | platform_external_elfutils-59587b33d472ee809250ffba77e38030939fc519.tar.gz platform_external_elfutils-59587b33d472ee809250ffba77e38030939fc519.tar.bz2 platform_external_elfutils-59587b33d472ee809250ffba77e38030939fc519.zip | |
libelf: Check __gelf_getehdr_rdlock call doesn't fail in elf_getdata.
GCC10 -fanalyzer with -flto notices __gelf_getehdr_rdlock can fail
and that the result of the call in __libelf_set_rawdata_wrlock isn't
checked, which can cause a dereference of NULL.
Signed-off-by: Mark Wielaard <mark@klomp.org>
Diffstat (limited to 'libelf')
| -rw-r--r-- | libelf/ChangeLog | 5 | ||||
| -rw-r--r-- | libelf/elf_getdata.c | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 56f5354c..fcea8aa9 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,8 @@ +2020-05-08 Mark Wielaard <mark@klomp.org> + + * elf_getdata.c (__libelf_set_rawdata_wrlock): Check + __gelf_getehdr_rdlock return value. + 2020-04-25 Mark Wielaard <mark@klomp.org> * elf_compress.c (__libelf_compress): Remove free (out_buf). diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c index 40fe1694..0d8f8d2e 100644 --- a/libelf/elf_getdata.c +++ b/libelf/elf_getdata.c @@ -271,6 +271,8 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn) { GElf_Ehdr ehdr_mem; GElf_Ehdr *ehdr = __gelf_getehdr_rdlock (elf, &ehdr_mem); + if (unlikely (ehdr == NULL)) + return 1; entsize = SH_ENTSIZE_HASH (ehdr); } else |
