Page MenuHomeFreeBSD

D41979.id127820.diff
No OneTemporary

D41979.id127820.diff

diff --git a/tests/sys/kern/Makefile b/tests/sys/kern/Makefile
--- a/tests/sys/kern/Makefile
+++ b/tests/sys/kern/Makefile
@@ -49,6 +49,8 @@
ATF_TESTS_C+= waitpid_nohang
ATF_TESTS_C+= pdeathsig
ATF_TESTS_C+= sigsys
+TEST_METADATA.sigsys+= is_exclusive="true"
+TEST_METADATA.sigsys+= required_user="root"
ATF_TESTS_SH+= coredump_phnum_test
ATF_TESTS_SH+= sonewconn_overflow
diff --git a/tests/sys/kern/sigsys.c b/tests/sys/kern/sigsys.c
--- a/tests/sys/kern/sigsys.c
+++ b/tests/sys/kern/sigsys.c
@@ -8,6 +8,7 @@
*/
#include <sys/syscall.h>
+#include <sys/sysctl.h>
#include <atf-c.h>
#include <errno.h>
@@ -19,20 +20,19 @@
static sig_atomic_t sigsys_cnt;
static void
-sigsys_handler(int signo, siginfo_t *si, void *ucp)
+sysctlset(const char *name, int32_t val)
{
- sigsys_cnt++;
+ ATF_REQUIRE(sysctlbyname(name, NULL, NULL, &val, sizeof(val)) == 0);
}
-ATF_TC(sigsys_test);
-
-ATF_TC_HEAD(sigsys_test, tc)
+static void
+sigsys_handler(int signo, siginfo_t *si, void *ucp)
{
- atf_tc_set_md_var(tc, "descr",
- "Testing delivery of SIGSYS on invalid syscalls");
+ sigsys_cnt++;
}
-ATF_TC_BODY(sigsys_test, tc)
+static void
+sigsys_test(int sigsys)
{
struct sigaction sa;
@@ -43,24 +43,63 @@
ATF_REQUIRE(syscall(273) == -1); /* reserved */
atomic_signal_fence(memory_order_seq_cst);
- ATF_REQUIRE(sigsys_cnt == 1);
+ ATF_REQUIRE(sigsys_cnt * sigsys == 1 * sigsys);
ATF_REQUIRE(syscall(440) == -1); /* SYS_kse_switchin */
atomic_signal_fence(memory_order_seq_cst);
- ATF_REQUIRE(sigsys_cnt == 2);
+ ATF_REQUIRE(sigsys_cnt * sigsys == 2 * sigsys);
/* Hope this is enough for say next two months */
ATF_REQUIRE(syscall(3000000) == -1);
atomic_signal_fence(memory_order_seq_cst);
- ATF_REQUIRE(sigsys_cnt == 3);
+ ATF_REQUIRE(sigsys_cnt * sigsys == 3 * sigsys);
ATF_REQUIRE(syscall(SYS_afs3_syscall) == -1);
atomic_signal_fence(memory_order_seq_cst);
- ATF_REQUIRE(sigsys_cnt == 4);
+ ATF_REQUIRE(sigsys_cnt * sigsys == 4 * sigsys);
+}
+
+ATF_TC_WITH_CLEANUP(sigsys_test_on);
+ATF_TC_HEAD(sigsys_test_on, tc)
+{
+ atf_tc_set_md_var(tc, "require.user", "root");
+ atf_tc_set_md_var(tc, "descr",
+ "Testing delivery of SIGSYS on invalid syscalls");
+}
+
+ATF_TC_BODY(sigsys_test_on, tc)
+{
+ sysctlset("kern.signosys", 1);
+ sigsys_test(1);
+}
+
+ATF_TC_CLEANUP(sigsys_test_on, tc)
+{
+ sysctlset("kern.signosys", 1);
+}
+
+ATF_TC_WITH_CLEANUP(sigsys_test_off);
+ATF_TC_HEAD(sigsys_test_off, tc)
+{
+ atf_tc_set_md_var(tc, "require.user", "root");
+ atf_tc_set_md_var(tc, "descr",
+ "Testing SIGSYS silence on invalid syscalls");
+}
+
+ATF_TC_BODY(sigsys_test_off, tc)
+{
+ sysctlset("kern.signosys", 0);
+ sigsys_test(0);
+}
+
+ATF_TC_CLEANUP(sigsys_test_off, tc)
+{
+ sysctlset("kern.signosys", 1);
}
ATF_TP_ADD_TCS(tp)
{
- ATF_TP_ADD_TC(tp, sigsys_test);
+ ATF_TP_ADD_TC(tp, sigsys_test_on);
+ ATF_TP_ADD_TC(tp, sigsys_test_off);
return (atf_no_error());
}

File Metadata

Mime Type
text/plain
Expires
Fri, Jun 26, 10:07 AM (5 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34353633
Default Alt Text
D41979.id127820.diff (2 KB)

Event Timeline