diff options
| author | Bruce Evans <bde@FreeBSD.org> | 1996-12-21 18:57:24 +0000 |
|---|---|---|
| committer | Bruce Evans <bde@FreeBSD.org> | 1996-12-21 18:57:24 +0000 |
| commit | 26077d50d834f54a16fae4fbc57d7b04ef815a79 (patch) | |
| tree | 38d7ead53c46c882048687350c5cb9df418f0146 | |
| parent | d4e935b63f81f1189ee404608404ef9197862f19 (diff) | |
Notes
| -rw-r--r-- | sys/kern/kern_sig.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 4c6cfe4a0cb9..1b4bb58ea362 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)kern_sig.c 8.7 (Berkeley) 4/18/94 - * $Id: kern_sig.c,v 1.25 1996/07/09 18:12:37 ache Exp $ + * $Id: kern_sig.c,v 1.26 1996/10/19 01:06:20 davidg Exp $ */ #include "opt_ktrace.h" @@ -108,8 +108,7 @@ sigaction(p, uap, retval) int bit, error; signum = uap->signum; - if (signum <= 0 || signum >= NSIG || - signum == SIGKILL || signum == SIGSTOP) + if (signum <= 0 || signum >= NSIG) return (EINVAL); sa = &vec; if (uap->osa) { @@ -135,6 +134,9 @@ sigaction(p, uap, retval) if ((error = copyin((caddr_t)uap->nsa, (caddr_t)sa, sizeof (vec)))) return (error); + if ((signum == SIGKILL || signum == SIGSTOP) && + sa->sa_handler != SIG_DFL) + return (EINVAL); setsigvec(p, signum, sa); } return (0); @@ -343,8 +345,7 @@ osigvec(p, uap, retval) int bit, error; signum = uap->signum; - if (signum <= 0 || signum >= NSIG || - signum == SIGKILL || signum == SIGSTOP) + if (signum <= 0 || signum >= NSIG) return (EINVAL); sv = &vec; if (uap->osv) { @@ -372,6 +373,9 @@ osigvec(p, uap, retval) if ((error = copyin((caddr_t)uap->nsv, (caddr_t)sv, sizeof (vec)))) return (error); + if ((signum == SIGKILL || signum == SIGSTOP) && + sv->sv_handler != SIG_DFL) + return (EINVAL); #ifdef COMPAT_SUNOS sv->sv_flags |= SA_USERTRAMP; #endif |
