From: Mark Wielaard Date: Sat, 9 May 2020 01:41:56 +0000 (+0200) Subject: libelf: Check __gelf_getehdr_rdlock call doesn't fail in elf_getdata. X-Git-Tag: elfutils-0.180~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59587b33d472ee809250ffba77e38030939fc519;p=thirdparty%2Felfutils.git 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 --- diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 56f5354c5..fcea8aa90 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,8 @@ +2020-05-08 Mark Wielaard + + * elf_getdata.c (__libelf_set_rawdata_wrlock): Check + __gelf_getehdr_rdlock return value. + 2020-04-25 Mark Wielaard * elf_compress.c (__libelf_compress): Remove free (out_buf). diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c index 40fe16945..0d8f8d2ee 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