summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_fork.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-12-19 00:53:23 +0000
committerjhb <jhb@FreeBSD.org>2001-12-19 00:53:23 +0000
commit5463e6afe56977ea4feef1f96bc380644a508627 (patch)
treefea762a362e2ea733a4187b3d2235059325b1a18 /sys/kern/kern_fork.c
parentecd2abc180c6afc9acbcf83bf9b02ff861893822 (diff)
downloadFreeBSD-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.c6
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;
OpenPOWER on IntegriCloud