xref: /xnu-12377.1.9/tests/signal_initproc.c (revision f6217f891ac0bb64f3d375211650a4c1ff8ca1ea)
1*f6217f89SApple OSS Distributions #include <darwintest.h>
2*f6217f89SApple OSS Distributions #include <signal.h>
3*f6217f89SApple OSS Distributions #include <errno.h>
4*f6217f89SApple OSS Distributions 
5*f6217f89SApple OSS Distributions T_GLOBAL_META(
6*f6217f89SApple OSS Distributions 	T_META_RADAR_COMPONENT_NAME("xnu"),
7*f6217f89SApple OSS Distributions 	T_META_RADAR_COMPONENT_VERSION("signals"),
8*f6217f89SApple OSS Distributions 	T_META_OWNER("m_staveleytaylor"),
9*f6217f89SApple OSS Distributions 	T_META_RUN_CONCURRENTLY(true)
10*f6217f89SApple OSS Distributions 	);
11*f6217f89SApple OSS Distributions 
12*f6217f89SApple OSS Distributions T_DECL(signal_initproc_prohibited, "Check that signalling initproc is prohibited", T_META_ASROOT(TRUE), T_META_TAG_VM_PREFERRED)
13*f6217f89SApple OSS Distributions {
14*f6217f89SApple OSS Distributions 	/* All user-initiated signals to launchd are prohibited. */
15*f6217f89SApple OSS Distributions 	bool saw_sigterm = false;
16*f6217f89SApple OSS Distributions 	bool saw_sigkill = false;
17*f6217f89SApple OSS Distributions 	int signal_max = SIGUSR2;
18*f6217f89SApple OSS Distributions 
19*f6217f89SApple OSS Distributions 	for (int signal = 1; signal < signal_max; signal++) {
20*f6217f89SApple OSS Distributions 		T_WITH_ERRNO;
21*f6217f89SApple OSS Distributions 		T_ASSERT_POSIX_FAILURE(kill(1, signal),
22*f6217f89SApple OSS Distributions 		    EPERM,
23*f6217f89SApple OSS Distributions 		    "Shouln't be able to send signal '%s' to initproc",
24*f6217f89SApple OSS Distributions 		    strsignal(signal));
25*f6217f89SApple OSS Distributions 
26*f6217f89SApple OSS Distributions 		saw_sigkill |= signal == SIGKILL;
27*f6217f89SApple OSS Distributions 		saw_sigterm |= signal == SIGTERM;
28*f6217f89SApple OSS Distributions 	}
29*f6217f89SApple OSS Distributions 
30*f6217f89SApple OSS Distributions 	T_ASSERT_TRUE(saw_sigkill, "Tried sigkill");
31*f6217f89SApple OSS Distributions 	T_ASSERT_TRUE(saw_sigterm, "Tried sigterm");
32*f6217f89SApple OSS Distributions }
33