From 6c1534a73e5b86aee3406bcbe24dab1169cddd7b Mon Sep 17 00:00:00 2001 From: Peter Wemm Date: Sat, 3 Nov 2001 13:26:15 +0000 Subject: [PATCH] _SIG_MAXSIG (128) is the highest legal signal. The arrays are offset by one - see _SIG_IDX(). Revert part of my mis-correction in kern_sig.c (but signal 0 still has to be allowed) and fix _SIG_VALID() (it was rejecting ignal 128). --- sys/kern/kern_sig.c | 4 ++-- sys/sys/_sigset.h | 2 +- sys/sys/signal.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 469a20fab83..da9b64cd400 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1053,7 +1053,7 @@ kill(td, uap) register struct proc *p; int error = 0; - if ((u_int)uap->signum >= _SIG_MAXSIG) + if ((u_int)uap->signum > _SIG_MAXSIG) return (EINVAL); mtx_lock(&Giant); @@ -1105,7 +1105,7 @@ okillpg(td, uap) { int error; - if ((u_int)uap->signum >= _SIG_MAXSIG) + if ((u_int)uap->signum > _SIG_MAXSIG) return (EINVAL); mtx_lock(&Giant); error = killpg1(td->td_proc, uap->signum, uap->pgid, 0); diff --git a/sys/sys/_sigset.h b/sys/sys/_sigset.h index 8fa9854f485..440a678fd41 100644 --- a/sys/sys/_sigset.h +++ b/sys/sys/_sigset.h @@ -53,7 +53,7 @@ #define _SIG_IDX(sig) ((sig) - 1) #define _SIG_WORD(sig) (_SIG_IDX(sig) >> 5) #define _SIG_BIT(sig) (1 << (_SIG_IDX(sig) & 31)) -#define _SIG_VALID(sig) ((sig) < _SIG_MAXSIG && (sig) > 0) +#define _SIG_VALID(sig) ((sig) <= _SIG_MAXSIG && (sig) > 0) /* * System defined signals. diff --git a/sys/sys/signal.h b/sys/sys/signal.h index 8fa9854f485..440a678fd41 100644 --- a/sys/sys/signal.h +++ b/sys/sys/signal.h @@ -53,7 +53,7 @@ #define _SIG_IDX(sig) ((sig) - 1) #define _SIG_WORD(sig) (_SIG_IDX(sig) >> 5) #define _SIG_BIT(sig) (1 << (_SIG_IDX(sig) & 31)) -#define _SIG_VALID(sig) ((sig) < _SIG_MAXSIG && (sig) > 0) +#define _SIG_VALID(sig) ((sig) <= _SIG_MAXSIG && (sig) > 0) /* * System defined signals. -- 2.45.2