From 1e17e3cd45bf4ec8798dbb1b2f8b9d03917ac322 Mon Sep 17 00:00:00 2001 From: rwatson Date: Sun, 22 Jun 2008 21:51:32 +0000 Subject: If S_IFIFO is passed to mknod(2), invoke kern_mkfifoat(9) to create a FIFO, as required by SUSv3. No specific privilege check is performed in this case, as FIFOs may be created by unprivileged processes (subject to the normal file system name space restrictions that may be in place). Unlike the Apple implementation, we reject requests to create a FIFO using mknod(2) if there is a non-zero dev argument to the system call, which is permitted by the Open Group specification ("... undefined ..."). We might want to revise this if we find it causes compatibility problems for applications in practice. PR: kern/74242, kern/68459 Obtained from: Apple, Inc. MFC after: 3 weeks --- sys/kern/vfs_syscalls.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 09f51e1..e38f80e 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -1264,6 +1264,10 @@ kern_mknodat(struct thread *td, int fd, char *path, enum uio_seg pathseg, case S_IFWHT: error = priv_check(td, PRIV_VFS_MKNOD_WHT); break; + case S_IFIFO: + if (dev == 0) + return (kern_mkfifoat(td, fd, path, pathseg, mode)); + /* FALLTHROUGH */ default: error = EINVAL; break; -- cgit v1.1