On Wed, Sep 1, 2021 at 4:48 AM Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote: > > 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@xxxxxxxxxx> > --- Applied to bpf-next, thanks. > tools/lib/bpf/libbpf.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index 6f5e2757bb3c..997060182cef 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -2990,6 +2990,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++; > -- > 2.33.0 >