From f31e45b1456b551ef8ee4711b06280a58954d980 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 1 Nov 2020 18:52:15 +0100 Subject: [PATCH] libelf: Check header exists in elf_strptr We already checked the header actually existed for ELFCLASS64 but not for the ELFCLASS32 case. It is very unlikely it is at this point in the code, but theoretically it could happen. Signed-off-by: Mark Wielaard --- libelf/ChangeLog | 4 ++++ libelf/elf_strptr.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index aee1fff..db3eed0 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,5 +1,9 @@ 2020-11-01 Mark Wielaard + * elf_strptr.c (elf_strptr): Check shdr is not NULL. + +2020-11-01 Mark Wielaard + * elf_getphdrnum.c (__elf_getphdrnum_rdlock): Set *dst to zero on error. diff --git a/libelf/elf_strptr.c b/libelf/elf_strptr.c index c727170..76f2caf 100644 --- a/libelf/elf_strptr.c +++ b/libelf/elf_strptr.c @@ -119,7 +119,7 @@ elf_strptr (Elf *elf, size_t idx, size_t offset) if (elf->class == ELFCLASS32) { Elf32_Shdr *shdr = strscn->shdr.e32 ?: __elf32_getshdr_rdlock (strscn); - if (unlikely (shdr->sh_type != SHT_STRTAB)) + if (unlikely (shdr == NULL || shdr->sh_type != SHT_STRTAB)) { /* This is no string section. */ __libelf_seterrno (ELF_E_INVALID_SECTION); -- 2.7.4