diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2018-08-03 06:57:35 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2018-08-03 06:57:35 +0000 |
commit | 695ba97c9faaa4638cbbada2e7be7f49f54aa881 (patch) | |
tree | 70989602bd6fbd78ddf64236a1f0738bdacdd7b9 /usr.bin/mesg | |
parent | 74c86fa514f4a3b7d87f7fd094bdf12e62a72caa (diff) |
pledge() a little later, after getopt operation, when we know tty name.
We can then unveil the tty file, and pledge() as before. No other files
are accessed after that point in time.
Diffstat (limited to 'usr.bin/mesg')
-rw-r--r-- | usr.bin/mesg/mesg.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/usr.bin/mesg/mesg.c b/usr.bin/mesg/mesg.c index e7e960094e9..a2dc944ed5c 100644 --- a/usr.bin/mesg/mesg.c +++ b/usr.bin/mesg/mesg.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mesg.c,v 1.12 2016/07/07 09:26:26 semarie Exp $ */ +/* $OpenBSD: mesg.c,v 1.13 2018/08/03 06:57:34 deraadt Exp $ */ /* $NetBSD: mesg.c,v 1.4 1994/12/23 07:16:32 jtc Exp $ */ /* @@ -52,9 +52,6 @@ main(int argc, char *argv[]) char *tty; int ch; - if (pledge("stdio rpath fattr", NULL) == -1) - err(2, "pledge"); - while ((ch = getopt(argc, argv, "")) != -1) switch (ch) { case '?': @@ -66,6 +63,12 @@ main(int argc, char *argv[]) if ((tty = ttyname(STDERR_FILENO)) == NULL) err(2, "ttyname"); + + if (unveil(tty, "rw") == -1) + err(1, "unveil"); + if (pledge("stdio rpath fattr", NULL) == -1) + err(1, "unveil"); + if (stat(tty, &sb) < 0) err(2, "%s", tty); |