1 #include <stdio.h> 2 #include <err.h> 3 #include <errno.h> 4 5 #include <sys/secflags.h> 6 #include <sys/syscall.h> 7 8 int 9 main(int argc, char **argv) 10 { 11 int err = 0; 12 secflagdelta_t act = {0}; 13 14 if ((err = syscall(SYS_psecflags, NULL, PSF_INHERIT, NULL)) != 0) { 15 if (errno != EFAULT) 16 warnx("attempt to set secflags with a NULL procset " 17 "set errno other than EFAULT (%d)", errno); 18 } else { 19 warnx("attempt to set secflags with a NULL procset succeeded"); 20 } 21 22 if ((err = syscall(SYS_psecflags, (void*)0xdeadbeef, 23 PSF_INHERIT, NULL)) != 0) { 24 if (errno != EFAULT) 25 warnx("attempt to set secflags with a bad procset " 26 "set errno other than EFAULT (%d)", errno); 27 } else { 28 warnx("attempt to set secflags with a bad procset succeeded"); 29 } 30 31 32 if ((err = psecflags(P_PID, P_MYID, PSF_INHERIT, NULL)) != 0) { 33 if (errno != EFAULT) 34 warnx("attempt to set secflags with a NULL " 35 "delta set errno to other than EFAULT (%d)", 36 errno); 37 } else { 38 warnx("attempt to set secflags with a NULL delta succeeded"); 39 } 40 41 if ((err = psecflags(P_PID, P_MYID, PSF_INHERIT, 42 (void*)0xdeadbeef)) != 0) { 43 if (errno != EFAULT) 44 warnx("attempt to set secflags with a bad " 45 "delta set errno to other than EFAULT (%d)", 46 errno); 47 } else { 48 warnx("attempt to set secflags with a bad delta succeeded"); 49 } 50 51 if ((err = psecflags(P_LWPID, P_MYID, PSF_INHERIT, &act)) != 0) { 52 if (errno != EINVAL) 53 warnx("attempt to set secflags of an lwpid set errno " 54 "to other than EINVAL (%d)", errno); 55 } else { 56 warnx("attempt to set secflags of an lwpid succeeded"); 57 } 58 59 if ((err = psecflags(P_LWPID, P_MYID, PSF_EFFECTIVE, &act)) != 0) { 60 if (errno != EINVAL) 61 warnx("attempt to set effective secflags set errno " 62 "to other than EINVAL (%d)", errno); 63 } else { 64 warnx("attempt to set effective secflags succeeded"); 65 } 66 67 return (0); 68 } 69