summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_sig.c
diff options
context:
space:
mode:
authorguenther <guenther@openbsd.org>2016-07-14 05:55:08 +0000
committerguenther <guenther@openbsd.org>2016-07-14 05:55:08 +0000
commitb261876b05beae09af1ac260b35bb38a79ca10da (patch)
tree89afa44d16b2b4aef3f285fc1d691373f4618c07 /sys/kern/kern_sig.c
parentufs_readdir() buffer was meant to be limited to 64kB; reversed test (diff)
downloadwireguard-openbsd-b261876b05beae09af1ac260b35bb38a79ca10da.tar.xz
wireguard-openbsd-b261876b05beae09af1ac260b35bb38a79ca10da.zip
Prevent silly states via knotes on pids > 2^32 and on nonexistent signals.
ok tedu@
Diffstat (limited to 'sys/kern/kern_sig.c')
-rw-r--r--sys/kern/kern_sig.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index 0d9eb786495..374e58d9bc4 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_sig.c,v 1.201 2016/07/06 15:53:01 tedu Exp $ */
+/* $OpenBSD: kern_sig.c,v 1.202 2016/07/14 05:55:08 guenther Exp $ */
/* $NetBSD: kern_sig.c,v 1.54 1996/04/22 01:38:32 christos Exp $ */
/*
@@ -1824,6 +1824,9 @@ filt_sigattach(struct knote *kn)
{
struct process *pr = curproc->p_p;
+ if (kn->kn_id >= NSIG)
+ return EINVAL;
+
kn->kn_ptr.p_process = pr;
kn->kn_flags |= EV_CLEAR; /* automatically set */