diff options
| author | Toke Høiland-Jørgensen <[email protected]> | 2021-09-01 11:48:12 +0000 |
|---|---|---|
| committer | Andrii Nakryiko <[email protected]> | 2021-09-08 00:18:48 +0000 |
| commit | 03e601f48b2da6fb44d0f7b86957a8f6bacfb347 (patch) | |
| tree | c45075220d4257dabbc4253f15152332bca5e9df /tools/lib/bpf/libbpf.c | |
| parent | bpf: Permit ingress_ifindex in bpf_prog_test_run_xattr (diff) | |
| download | kernel-03e601f48b2da6fb44d0f7b86957a8f6bacfb347.tar.gz kernel-03e601f48b2da6fb44d0f7b86957a8f6bacfb347.zip | |
libbpf: Don't crash on object files with no symbol tables
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 <[email protected]>
Signed-off-by: Andrii Nakryiko <[email protected]>
Link: https://lore.kernel.org/bpf/[email protected]
Diffstat (limited to 'tools/lib/bpf/libbpf.c')
| -rw-r--r-- | tools/lib/bpf/libbpf.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 88d8825fc6f6..8f579c6666b2 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -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++; |
