diff options
author | jhb <jhb@FreeBSD.org> | 2001-12-19 00:53:23 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2001-12-19 00:53:23 +0000 |
commit | 5463e6afe56977ea4feef1f96bc380644a508627 (patch) | |
tree | fea762a362e2ea733a4187b3d2235059325b1a18 /sys/kern/kern_fork.c | |
parent | ecd2abc180c6afc9acbcf83bf9b02ff861893822 (diff) | |
download | FreeBSD-src-5463e6afe56977ea4feef1f96bc380644a508627.zip FreeBSD-src-5463e6afe56977ea4feef1f96bc380644a508627.tar.gz |
Return EINVAL if kernel only flags are passed to the rfork syscall rather
than silently masking them.
Diffstat (limited to 'sys/kern/kern_fork.c')
-rw-r--r-- | sys/kern/kern_fork.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index bc03078..15b8be4 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -160,9 +160,11 @@ rfork(td, uap) int error; struct proc *p2; - /* mask kernel only flags out of the user flags */ + /* Don't allow kernel only flags. */ + if ((uap->flags & RFKERNELONLY) != 0) + return (EINVAL); mtx_lock(&Giant); - error = fork1(td, uap->flags & ~RFKERNELONLY, &p2); + error = fork1(td, uap->flags, &p2); if (error == 0) { td->td_retval[0] = p2 ? p2->p_pid : 0; td->td_retval[1] = 0; |