diff options
author | Jean-Philippe Brucker <jean-philippe@linaro.org> | 2021-12-13 18:30:59 +0000 |
---|---|---|
committer | Andrii Nakryiko <andrii@kernel.org> | 2021-12-13 13:36:08 -0800 |
commit | acd143eefb8270b8f50e2ce44e2fcdbbcf496a86 (patch) | |
tree | f6304f8f93b9f0fe7bc2a28a71123867cffc6eb0 /tools | |
parent | c8064e5b4adac5e1255cf4f3b374e75b5376e7ca (diff) | |
download | linux-acd143eefb8270b8f50e2ce44e2fcdbbcf496a86.tar.gz linux-acd143eefb8270b8f50e2ce44e2fcdbbcf496a86.tar.bz2 linux-acd143eefb8270b8f50e2ce44e2fcdbbcf496a86.zip |
selftests/bpf: Fix segfault in bpf_tcp_ca
Since commit ad9a7f96445b ("libbpf: Improve logging around BPF program
loading"), libbpf_debug_print() gets an additional prog_name parameter
but doesn't pass it to printf(). Since the format string now expects two
arguments, printf() may read uninitialized data and segfault. Pass
prog_name through.
Fixes: ad9a7f96445b ("libbpf: Improve logging around BPF program loading")
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20211213183058.346066-1-jean-philippe@linaro.org
Diffstat (limited to 'tools')
-rw-r--r-- | tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c b/tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c index 8daca0ac909f..8f7a1cef7d87 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c @@ -217,7 +217,7 @@ static bool found; static int libbpf_debug_print(enum libbpf_print_level level, const char *format, va_list args) { - const char *log_buf; + const char *prog_name, *log_buf; if (level != LIBBPF_WARN || !strstr(format, "-- BEGIN PROG LOAD LOG --")) { @@ -225,15 +225,14 @@ static int libbpf_debug_print(enum libbpf_print_level level, return 0; } - /* skip prog_name */ - va_arg(args, char *); + prog_name = va_arg(args, char *); log_buf = va_arg(args, char *); if (!log_buf) goto out; if (err_str && strstr(log_buf, err_str) != NULL) found = true; out: - printf(format, log_buf); + printf(format, prog_name, log_buf); return 0; } |