1#include <stdio.h>
2#include <err.h>
3#include <errno.h>
4
5#include <sys/secflags.h>
6#include <sys/syscall.h>
7
8int
9main(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