summaryrefslogtreecommitdiffstats
path: root/sys/fs/fifofs
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2006-03-14 19:29:45 +0000
committerrwatson <rwatson@FreeBSD.org>2006-03-14 19:29:45 +0000
commit40fd39052074528ac10bac208ac9a7e7f574aef7 (patch)
tree4a92fd31d5889e855f0774e0265f95da7e9dca29 /sys/fs/fifofs
parentf8eae18feaf7131fbf001929cb08fcab8c8ddfe0 (diff)
downloadFreeBSD-src-40fd39052074528ac10bac208ac9a7e7f574aef7.zip
FreeBSD-src-40fd39052074528ac10bac208ac9a7e7f574aef7.tar.gz
If fifo_open() is called with a negative file descriptor, return EINVAL
rather than panicking later. This can occur if the kernel calls vn_open() on a fifo, as there will be no associated file descriptor, and therefore the file descriptor operations cannot be modified to point to the fifo operation set. MFC after: 3 days Reported by: Martin <nakal at nurfuerspam dot de> PR: 94278
Diffstat (limited to 'sys/fs/fifofs')
-rw-r--r--sys/fs/fifofs/fifo_vnops.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/fs/fifofs/fifo_vnops.c b/sys/fs/fifofs/fifo_vnops.c
index 37dfcb9..fb84263 100644
--- a/sys/fs/fifofs/fifo_vnops.c
+++ b/sys/fs/fifofs/fifo_vnops.c
@@ -179,6 +179,8 @@ fifo_open(ap)
int error;
ASSERT_VOP_LOCKED(vp, "fifo_open");
+ if (ap->a_fdidx < 0)
+ return (EINVAL);
if ((fip = vp->v_fifoinfo) == NULL) {
MALLOC(fip, struct fifoinfo *, sizeof(*fip), M_VNODE, M_WAITOK);
error = socreate(AF_LOCAL, &rso, SOCK_STREAM, 0, cred, td);
OpenPOWER on IntegriCloud