libbpf: Fix hypothetical STT_SECTION extern NULL deref case
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 20 Feb 2025 00:28:21 +0000 (16:28 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 21 Feb 2025 02:42:16 +0000 (18:42 -0800)
Fix theoretical NULL dereference in linker when resolving *extern*
STT_SECTION symbol against not-yet-existing ELF section. Not sure if
it's possible in practice for valid ELF object files (this would require
embedded assembly manipulations, at which point BTF will be missing),
but fix the s/dst_sym/dst_sec/ typo guarding this condition anyways.

Fixes: faf6ed321cf6 ("libbpf: Add BPF static linker APIs")
Fixes: a46349227cd8 ("libbpf: Add linker extern resolution support for functions and global variables")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20250220002821.834400-1-andrii@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/lib/bpf/linker.c

index b52f71c59616fd359dce5af2cb277e2b9da04943..800e0ef09c37875cb720fb82272e7ab68932b0dc 100644 (file)
@@ -2163,7 +2163,7 @@ add_sym:
 
        obj->sym_map[src_sym_idx] = dst_sym_idx;
 
-       if (sym_type == STT_SECTION && dst_sym) {
+       if (sym_type == STT_SECTION && dst_sec) {
                dst_sec->sec_sym_idx = dst_sym_idx;
                dst_sym->st_value = 0;
        }