Hi,

Just like in mesg(1) in biff(1) we just need to push down pledge a little bit
to get the tty name. After this we can unveil the tty with rw access in
order to stat(2)/chmod(2) it, once this is done we can put back the same
pledge(2) just right afterwards.

OK?

Index: biff.c
===================================================================
RCS file: /cvs/src/usr.bin/biff/biff.c,v
retrieving revision 1.15
diff -u -p -u -r1.15 biff.c
--- biff.c      7 Jul 2016 09:26:25 -0000       1.15
+++ biff.c      10 Aug 2018 09:48:25 -0000
@@ -49,9 +49,6 @@ main(int argc, char *argv[])
        int ch;
        char *name;
 
-       if (pledge("stdio rpath fattr", NULL) == -1)
-               err(2, "pledge");
-
        while ((ch = getopt(argc, argv, "")) != -1)
                switch(ch) {
                case '?':
@@ -63,6 +60,11 @@ main(int argc, char *argv[])
 
        if ((name = ttyname(STDERR_FILENO)) == NULL)
                err(2, "tty");
+
+       if (unveil(name, "rw") == -1)
+               err(2, "unveil");
+       if (pledge("stdio rpath fattr", NULL) == -1)
+               err(2, "pledge");
 
        if (stat(name, &sb))
                err(2, "stat");

Reply via email to