Fairly straightforward pledge for cribbage:

It might fork-exec a pager ($PAGER or more(1)) in instructions()
afterwards only "stdio tty" is needed.

Index: cribbage/crib.c
===================================================================
RCS file: /var/cvs/src/games/cribbage/crib.c,v
retrieving revision 1.18
diff -u -p -r1.18 crib.c
--- cribbage/crib.c     12 Mar 2015 02:19:10 -0000      1.18
+++ cribbage/crib.c     29 Nov 2015 12:42:30 -0000
@@ -49,6 +49,9 @@ main(int argc, char *argv[])
        bool playing;
        int ch;
 
+       if(pledge("stdio rpath tty proc exec", NULL) == -1)
+               err(1, "pledge");
+
        while ((ch = getopt(argc, argv, "emqr")) != -1)
                switch (ch) {
                case 'e':
@@ -92,6 +95,8 @@ main(int argc, char *argv[])
                        mvcur(0, COLS - 1, LINES - 1, 0);
                        fflush(stdout);
                        instructions();
+                       if (pledge("stdio tty", NULL) == -1)
+                               err(1, "pledge");
                        cbreak();
                        noecho();
                        clear();
Index: cribbage/instr.c
===================================================================
RCS file: /var/cvs/src/games/cribbage/instr.c,v
retrieving revision 1.11
diff -u -p -r1.11 instr.c
--- cribbage/instr.c    27 Oct 2009 23:59:24 -0000      1.11
+++ cribbage/instr.c    29 Nov 2015 12:13:21 -0000
@@ -64,7 +64,6 @@ instructions(void)
                err(1, "vfork");
                /* NOTREACHED */
        case 0:
-               setgid(getgid());
                if (!isatty(1))
                        pager = "/bin/cat";
                else {

Reply via email to