libbpf: Don't crash on object files with no symbol tables
[ Upstream commit 03e601f48b2da6fb44d0f7b86957a8f6bacfb347 ] If libbpf encounters an ELF file that has been stripped of its symbol table, it will crash in bpf_object__add_programs() when trying to dereference the obj->efile.symbols pointer. Fix this by erroring out of bpf_object__elf_collect() if it is not able able to find the symbol table. v2: - Move check into bpf_object__elf_collect() and add nice error message Fixes: 6245947c1b3c ("libbpf: Allow gaps in BPF program sections to support overriden weak functions") Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20210901114812.204720-1-toke@redhat.com Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
11080de0a7
commit
9fc0420864
@ -2993,6 +2993,12 @@ static int bpf_object__elf_collect(struct bpf_object *obj)
|
||||
}
|
||||
}
|
||||
|
||||
if (!obj->efile.symbols) {
|
||||
pr_warn("elf: couldn't find symbol table in %s, stripped object file?\n",
|
||||
obj->path);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
scn = NULL;
|
||||
while ((scn = elf_nextscn(elf, scn)) != NULL) {
|
||||
idx++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user