matthieu@ observes % pax (without any arguments) hits pledge violation,
authorderaadt <deraadt@openbsd.org>
Mon, 17 Apr 2017 20:22:14 +0000 (20:22 +0000)
committerderaadt <deraadt@openbsd.org>
Mon, 17 Apr 2017 20:22:14 +0000 (20:22 +0000)
because it tries MTIOCTOP against stdin, the tty.  It is very inconvenient
to use isatty to distinguish this difference in userland, so return ENOTTY
for tty devices.
ok natano

sys/kern/kern_pledge.c

index 406fbfe..b1c5bbc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kern_pledge.c,v 1.203 2017/04/13 04:06:46 guenther Exp $      */
+/*     $OpenBSD: kern_pledge.c,v 1.204 2017/04/17 20:22:14 deraadt Exp $       */
 
 /*
  * Copyright (c) 2015 Nicholas Marriott <nicm@openbsd.org>
@@ -1155,9 +1155,12 @@ pledge_ioctl(struct proc *p, long com, struct file *fp)
                case MTIOCTOP:
                        /* for pax(1) and such, checking tapes... */
                        if (fp->f_type == DTYPE_VNODE &&
-                           vp->v_type == VCHR &&
-                           (vp->v_flag & VISTTY) == 0)
-                               return (0);
+                           vp->v_type == VCHR) {
+                               if (vp->v_flag & VISTTY)
+                                       return (ENOTTY);
+                               else
+                                       return (0);
+                       }
                        break;
                }
        }