lkml.org 
[lkml]   [2021]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.14 342/849] libbpf: Dont crash on object files with no symbol tables
    Date
    From: Toke Høiland-Jørgensen <toke@redhat.com>

    [ 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>
    ---
    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 f1bc09e606cd1..994266b565c1a 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


    \
     
     \ /
      Last update: 2021-11-15 23:52    [W:3.599 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site