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)