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
This commit is contained in:
parent
b6365f959c
commit
3319d71265
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user