On Wed, 06 Jul 2016 06:53:06 -0600, "Todd C. Miller" wrote:

> Is there any reason to not do the check higher up in domknodat()?
> A mknod of -1 on ffs results in a device of major 0, minor 0 which
> is unexpected.

The following should be sufficient and not interfere with creating
FIFOs or badsect(8).

 - todd

Index: sys/kern/vfs_syscalls.c
===================================================================
RCS file: /cvs/src/sys/kern/vfs_syscalls.c,v
retrieving revision 1.260
diff -u -p -u -r1.260 vfs_syscalls.c
--- sys/kern/vfs_syscalls.c     3 Jul 2016 04:36:08 -0000       1.260
+++ sys/kern/vfs_syscalls.c     6 Jul 2016 13:01:57 -0000
@@ -1228,6 +1228,8 @@ domknodat(struct proc *p, int fd, const 
                if (p->p_fd->fd_rdir)
                        return (EINVAL);
        }
+       if (dev == VNOVAL)
+               return (EINVAL);
        NDINITAT(&nd, CREATE, LOCKPARENT, UIO_USERSPACE, fd, path, p);
        nd.ni_pledge = PLEDGE_DPATH;
        if ((error = namei(&nd)) != 0)

Reply via email to