Re: [PATCH 1/3] elf_symtab: Add support for SHN_XINDEX index to elf_section_by_name
From: Jiri Olsa <hidden>
Date: 2021-01-21 23:35:51
Also in:
netdev
On Thu, Jan 21, 2021 at 03:10:25PM -0800, Andrii Nakryiko wrote:
On Thu, Jan 21, 2021 at 12:24 PM Jiri Olsa [off-list ref] wrote:quoted
In case the elf's header e_shstrndx contains SHN_XINDEX, we need to call elf_getshdrstrndx to get the proper string table index. Signed-off-by: Jiri Olsa <jolsa@kernel.org> --- dutil.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)diff --git a/dutil.c b/dutil.c index 7b667647420f..9e0fdca3ae04 100644 --- a/dutil.c +++ b/dutil.c@@ -179,13 +179,17 @@ Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep, { Elf_Scn *sec = NULL; size_t cnt = 1; + size_t str_idx; + + if (elf_getshdrstrndx(elf, &str_idx)) + return NULL; while ((sec = elf_nextscn(elf, sec)) != NULL) { char *str; gelf_getshdr(sec, shp); - str = elf_strptr(elf, ep->e_shstrndx, shp->sh_name); - if (!strcmp(name, str)) { + str = elf_strptr(elf, str_idx, shp->sh_name); + if (str && !strcmp(name, str)) {if (!str) would be an error? should we bail out here?
seems like if elf_nextscn returns NULL, it will be the case for all the sections in here.. but bailing out on (!str) is more direct and safer I'll send an update thanks, jirka
quoted
if (index) *index = cnt; break; -- 2.27.0