diff options
| author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2026-03-09 21:00:52 +0000 |
|---|---|---|
| committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2026-03-09 21:01:41 +0000 |
| commit | 863b5c137a98d29dc6964cba0e0c4fe2a8bebab8 (patch) | |
| tree | 4daa16d5d6e0f32d502cde24e0d548b0bc26b38d | |
| parent | 48368f702423742b2a7dff7ad3191625e8bf26f0 (diff) | |
system(3): Fix brain glitch in previous commit
We were saving SIGINT twice instead of SIGINT and SIGQUIT.
Also restore original order of operations (SIGINT then SIGQUIT), which
matches the order in which they're discussed in the POSIX description
of system(3).
MFC after: 1 week
Sponsored by: Klara, Inc.
Fixes: 48368f702423 ("system(3): Address test robustness issue")
| -rw-r--r-- | lib/libc/tests/stdlib/system_test.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/libc/tests/stdlib/system_test.c b/lib/libc/tests/stdlib/system_test.c index cb6ecdb28065..9e556f257791 100644 --- a/lib/libc/tests/stdlib/system_test.c +++ b/lib/libc/tests/stdlib/system_test.c @@ -128,7 +128,7 @@ ATF_TC_BODY(system_concurrent, tc) /* Save the current signal dispositions */ ATF_REQUIRE_EQ(0, sigaction(SIGINT, NULL, &sigint)); - ATF_REQUIRE_EQ(0, sigaction(SIGINT, NULL, &sigquit)); + ATF_REQUIRE_EQ(0, sigaction(SIGQUIT, NULL, &sigquit)); ATF_REQUIRE_EQ(0, sigprocmask(0, NULL, &normset)); /* Spawn threads which block on these files */ @@ -149,10 +149,10 @@ ATF_TC_BODY(system_concurrent, tc) /* Release the locks */ for (int i = 0; i < N; i++) { /* Check the signal dispositions */ - ATF_REQUIRE_EQ(0, sigaction(SIGQUIT, NULL, &sigact)); - ATF_CHECK_EQ(SIG_IGN, sigact.sa_handler); ATF_REQUIRE_EQ(0, sigaction(SIGINT, NULL, &sigact)); ATF_CHECK_EQ(SIG_IGN, sigact.sa_handler); + ATF_REQUIRE_EQ(0, sigaction(SIGQUIT, NULL, &sigact)); + ATF_CHECK_EQ(SIG_IGN, sigact.sa_handler); #ifndef PROCMASK_IS_THREADMASK ATF_REQUIRE_EQ(0, sigprocmask(0, NULL, &sigset)); ATF_CHECK(sigismember(&sigset, SIGCHLD)); @@ -167,14 +167,14 @@ ATF_TC_BODY(system_concurrent, tc) } /* Check the signal dispositions */ - ATF_REQUIRE_EQ(0, sigaction(SIGQUIT, NULL, &sigact)); - ATF_CHECK_EQ(sigquit.sa_handler, sigact.sa_handler); - ATF_CHECK_EQ(sigquit.sa_flags, sigact.sa_flags); - ATF_CHECK_EQ(0, sigcmpset(&sigquit.sa_mask, &sigact.sa_mask)); ATF_REQUIRE_EQ(0, sigaction(SIGINT, NULL, &sigact)); ATF_CHECK_EQ(sigint.sa_handler, sigact.sa_handler); ATF_CHECK_EQ(sigint.sa_flags, sigact.sa_flags); ATF_CHECK_EQ(0, sigcmpset(&sigint.sa_mask, &sigact.sa_mask)); + ATF_REQUIRE_EQ(0, sigaction(SIGQUIT, NULL, &sigact)); + ATF_CHECK_EQ(sigquit.sa_handler, sigact.sa_handler); + ATF_CHECK_EQ(sigquit.sa_flags, sigact.sa_flags); + ATF_CHECK_EQ(0, sigcmpset(&sigquit.sa_mask, &sigact.sa_mask)); ATF_REQUIRE_EQ(0, sigprocmask(0, NULL, &sigset)); ATF_CHECK_EQ(0, sigcmpset(&sigset, &normset)); } |
