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