From: Björn Töpel bjorn@rivosinc.com
There are scenarios where env.{sub,}test_state->stdout_saved, can be NULL, e.g. sometimes when the watchdog timeout kicks in, or if the open_memstream syscall is not available.
Avoid crashing test_progs by adding an explicit NULL check prior the fclose() call.
Signed-off-by: Björn Töpel bjorn@rivosinc.com --- tools/testing/selftests/bpf/test_progs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selftests/bpf/test_progs.c index d4ec9586b98c..309d9d4a8ace 100644 --- a/tools/testing/selftests/bpf/test_progs.c +++ b/tools/testing/selftests/bpf/test_progs.c @@ -103,12 +103,14 @@ static void stdio_restore(void) pthread_mutex_lock(&stdout_lock);
if (env.subtest_state) { - fclose(env.subtest_state->stdout_saved); + if (env.subtest_state->stdout_saved) + fclose(env.subtest_state->stdout_saved); env.subtest_state->stdout_saved = NULL; stdout = env.test_state->stdout_saved; stderr = env.test_state->stdout_saved; } else { - fclose(env.test_state->stdout_saved); + if (env.test_state->stdout_saved) + fclose(env.test_state->stdout_saved); env.test_state->stdout_saved = NULL; stdout = env.stdout_saved; stderr = env.stderr_saved;
base-commit: f3f8649585a445414521a6d5b76f41b51205086d
On Tue, Mar 18, 2025 at 09:16:47AM +0100, Björn Töpel wrote:
From: Björn Töpel bjorn@rivosinc.com
There are scenarios where env.{sub,}test_state->stdout_saved, can be NULL, e.g. sometimes when the watchdog timeout kicks in, or if the open_memstream syscall is not available.
Avoid crashing test_progs by adding an explicit NULL check prior the fclose() call.
Signed-off-by: Björn Töpel bjorn@rivosinc.com
Acked-by: Jiri Olsa jolsa@kernel.org
jirka
tools/testing/selftests/bpf/test_progs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selftests/bpf/test_progs.c index d4ec9586b98c..309d9d4a8ace 100644 --- a/tools/testing/selftests/bpf/test_progs.c +++ b/tools/testing/selftests/bpf/test_progs.c @@ -103,12 +103,14 @@ static void stdio_restore(void) pthread_mutex_lock(&stdout_lock); if (env.subtest_state) {
fclose(env.subtest_state->stdout_saved);
if (env.subtest_state->stdout_saved)
env.subtest_state->stdout_saved = NULL;fclose(env.subtest_state->stdout_saved);
nit, setting to NULL could be inside the condition
stdout = env.test_state->stdout_saved; stderr = env.test_state->stdout_saved;
} else {
fclose(env.test_state->stdout_saved);
if (env.test_state->stdout_saved)
env.test_state->stdout_saved = NULL; stdout = env.stdout_saved; stderr = env.stderr_saved;fclose(env.test_state->stdout_saved);
base-commit: f3f8649585a445414521a6d5b76f41b51205086d
2.45.2
Hello:
This patch was applied to bpf/bpf-next.git (master) by Andrii Nakryiko andrii@kernel.org:
On Tue, 18 Mar 2025 09:16:47 +0100 you wrote:
From: Björn Töpel bjorn@rivosinc.com
There are scenarios where env.{sub,}test_state->stdout_saved, can be NULL, e.g. sometimes when the watchdog timeout kicks in, or if the open_memstream syscall is not available.
Avoid crashing test_progs by adding an explicit NULL check prior the fclose() call.
[...]
Here is the summary with links: - [bpf-next] selftests/bpf: Sanitize pointer prior fclose() https://git.kernel.org/bpf/bpf-next/c/e16e64f9e076
You are awesome, thank you!
linux-kselftest-mirror@lists.linaro.org