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 }