diff options
author | rwatson <rwatson@FreeBSD.org> | 2006-03-14 19:29:45 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2006-03-14 19:29:45 +0000 |
commit | 40fd39052074528ac10bac208ac9a7e7f574aef7 (patch) | |
tree | 4a92fd31d5889e855f0774e0265f95da7e9dca29 /sys | |
parent | f8eae18feaf7131fbf001929cb08fcab8c8ddfe0 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/fs/fifofs/fifo_vnops.c | 2 |
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); |