libbpf: Validate ELF symbol table entry size

elf_sym_iter_new() calculates the number of symbols by dividing the
symbol table data size by sh_entsize. A malformed ELF file with a zero
sh_entsize causes a division by zero.

Reject symbol table sections with a zero entry size before calculating
the number of symbols.

Signed-off-by: Luis Vieira <luisflavieira@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20260916-libbpf-elf-entsize-fix-v1-1-cf181da33eab@gmail.com
This commit is contained in:
Luis Vieira authored and Andrii Nakryiko committed 2026-10-02 05:41:50 -07:00
1 parent b68bed3090
commit 6c8e5e7d98
1 file changed
+1 -1
+1 -1
View File
@@ -115,7 +115,7 @@ static int elf_sym_iter_new(struct elf_sym_iter *iter,
return -ENOENT;
}
if (!gelf_getshdr(scn, &sh))
if (!gelf_getshdr(scn, &sh) || !sh.sh_entsize)
return -EINVAL;
iter->strtabidx = sh.sh_link;