]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:31:59 +0000 (14:31 +0200)
[ Upstream commit e0525cd72b5979d8089fe524a071ea93fd011dc9 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/lib/bpf/linker.c

index 2adf55f4874300cffd72c13c24c4a07db31cb409..fc91814a35e8e20d8eb7dec17fa3caec04ec00e8 100644 (file)
@@ -1966,7 +1966,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;
        }