diff options
author | joerg <joerg@FreeBSD.org> | 1997-10-22 07:28:51 +0000 |
---|---|---|
committer | joerg <joerg@FreeBSD.org> | 1997-10-22 07:28:51 +0000 |
commit | b631d52e4d202d2b6393d4e5627eb1a51c33c37d (patch) | |
tree | 507795824f260fc24b3a90d01fab00c3e800ec30 /sys/kern/vfs_syscalls.c | |
parent | 90755c07f9f1703e99d77beeec791b48791f538d (diff) | |
download | FreeBSD-src-b631d52e4d202d2b6393d4e5627eb1a51c33c37d.zip FreeBSD-src-b631d52e4d202d2b6393d4e5627eb1a51c33c37d.tar.gz |
Reject attempts to call open() with an illegal combination of O_RDONLY,
O_WRONLY, O_RDWR.
Diffstat (limited to 'sys/kern/vfs_syscalls.c')
-rw-r--r-- | sys/kern/vfs_syscalls.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 4a01b57..057e908 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94 - * $Id: vfs_syscalls.c,v 1.75 1997/09/28 06:37:02 phk Exp $ + * $Id: vfs_syscalls.c,v 1.76 1997/10/12 20:24:27 phk Exp $ */ /* @@ -863,11 +863,13 @@ open(p, uap, retval) struct flock lf; struct nameidata nd; + flags = FFLAGS(SCARG(uap, flags)); + if ((flags & FREAD + FWRITE) == 0) + return (EINVAL); error = falloc(p, &nfp, &indx); if (error) return (error); fp = nfp; - flags = FFLAGS(SCARG(uap, flags)); cmode = ((SCARG(uap, mode) &~ fdp->fd_cmask) & ALLPERMS) &~ S_ISTXT; NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, SCARG(uap, path), p); p->p_dupfd = -indx - 1; /* XXX check for fdopen */ |