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