linux/tools/bpf/bpftool
Quentin Monnet 70cfab1d87 tools, bpftool: Skip type probe if name is not found
For probing program and map types, bpftool loops on type values and uses
the relevant type name in prog_type_name[] or map_type_name[]. To ensure
the name exists, we exit from the loop if we go over the size of the
array.

However, this is not enough in the case where the arrays have "holes" in
them, program or map types for which they have no name, but not at the
end of the list. This is currently the case for BPF_PROG_TYPE_LSM, not
known to bpftool and which name is a null string. When probing for
features, bpftool attempts to strlen() that name and segfaults.

Let's fix it by skipping probes for "unknown" program and map types,
with an informational message giving the numeral value in that case.

Fixes: 93a3545d81 ("tools/bpftool: Add name mappings for SK_LOOKUP prog and attach type")
Reported-by: Paul Chaignon <paul@cilium.io>
Signed-off-by: Quentin Monnet <quentin@isovalent.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20200724090618.16378-2-quentin@isovalent.com
2020-07-27 22:40:25 +02:00
..
bash-completion tools/bpftool: Add bpftool support for bpf map element iterator 2020-07-25 20:16:33 -07:00
Documentation tools/bpftool: Add bpftool support for bpf map element iterator 2020-07-25 20:16:33 -07:00
skeleton samples/bpf, selftests/bpf: Use bpf_probe_read_kernel 2020-07-21 13:26:26 -07:00
.gitignore tools/bpftool: Generalize BPF skeleton support and generate vmlinux.h 2020-06-22 17:01:48 -07:00
btf.c tools/bpftool: Show info for processes holding BPF map/prog/link/btf FDs 2020-06-22 17:01:49 -07:00
btf_dumper.c tools, bpftool: Poison and replace kernel integer typedefs 2020-05-11 21:20:46 +02:00
cfg.c tools, bpftool: Poison and replace kernel integer typedefs 2020-05-11 21:20:46 +02:00
cfg.h tools: bpftool: replace Netronome boilerplate with SPDX license headers 2018-12-13 12:08:44 +01:00
cgroup.c tools, bpftool: Clean subcommand help messages 2020-06-01 14:38:18 -07:00
common.c bpftool: Use only nftw for file tree parsing 2020-07-21 23:42:56 +02:00
feature.c tools, bpftool: Skip type probe if name is not found 2020-07-27 22:40:25 +02:00
gen.c tools/bpftool: Fix error handing in do_skeleton() 2020-07-21 13:26:25 -07:00
iter.c tools/bpftool: Add bpftool support for bpf map element iterator 2020-07-25 20:16:33 -07:00
jit_disasm.c tools/bpf/bpftool: Remove duplicate headers 2020-04-26 08:40:01 -07:00
json_writer.c tools: bpftool: move "__printf()" attributes to header file 2019-08-15 22:06:46 -07:00
json_writer.h tools: bpftool: move "__printf()" attributes to header file 2019-08-15 22:06:46 -07:00
link.c tools, bpftool: Define prog_type_name array only once 2020-06-25 16:06:01 +02:00
main.c tools/bpftool: Show info for processes holding BPF map/prog/link/btf FDs 2020-06-22 17:01:49 -07:00
main.h bpftool: Use only nftw for file tree parsing 2020-07-21 23:42:56 +02:00
Makefile tools/bpftool: Strip BPF .o files before skeleton generation 2020-07-25 20:15:32 -07:00
map.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2020-07-04 17:48:34 -07:00
map_perf_ring.c tools, bpftool: Poison and replace kernel integer typedefs 2020-05-11 21:20:46 +02:00
net.c tools, bpftool: Clean subcommand help messages 2020-06-01 14:38:18 -07:00
netlink_dumper.c bpftool: Use consistent include paths for libbpf 2020-01-20 16:37:45 -08:00
netlink_dumper.h tools: bpftool: dual license all files 2018-12-13 12:08:44 +01:00
perf.c tools, bpftool: Clean subcommand help messages 2020-06-01 14:38:18 -07:00
pids.c tools/bpftool: Remove warning about PID iterator support 2020-07-13 15:41:05 -07:00
prog.c tools/bpftool: Add name mappings for SK_LOOKUP prog and attach type 2020-07-17 20:18:17 -07:00
struct_ops.c tools, bpftool: Clean subcommand help messages 2020-06-01 14:38:18 -07:00
tracelog.c tools: bpftool: add an option to prevent auto-mount of bpffs, tracefs 2018-12-18 14:47:17 +01:00
xlated_dumper.c bpftool: Use consistent include paths for libbpf 2020-01-20 16:37:45 -08:00
xlated_dumper.h tools: bpftool: replace Netronome boilerplate with SPDX license headers 2018-12-13 12:08:44 +01:00