diff options
author | bde <bde@FreeBSD.org> | 1996-11-29 13:12:14 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1996-11-29 13:12:14 +0000 |
commit | fee89092b7398255f67e6b1bf2ee5ebe3e168db5 (patch) | |
tree | 1990f954049e348f2c02e431adf5a27019138a9e | |
parent | cd93045dc4051c70e1a2b19a4214040853d3f353 (diff) | |
download | FreeBSD-src-fee89092b7398255f67e6b1bf2ee5ebe3e168db5.zip FreeBSD-src-fee89092b7398255f67e6b1bf2ee5ebe3e168db5.tar.gz |
Don't clobber the SIGCONT bit in the signal mask in sigreturn(). Use
the `sigcantmask' macro to get the correct set of unmaskable signals.
Found by: NIST-PCTS.
-rw-r--r-- | sys/amd64/amd64/machdep.c | 5 | ||||
-rw-r--r-- | sys/i386/i386/machdep.c | 5 |
2 files changed, 4 insertions, 6 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 0746c66..8fef9e8 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 - * $Id: machdep.c,v 1.211 1996/11/11 20:38:52 bde Exp $ + * $Id: machdep.c,v 1.212 1996/11/17 02:11:01 dyson Exp $ */ #include "npx.h" @@ -658,8 +658,7 @@ sigreturn(p, uap, retval) p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; else p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; - p->p_sigmask = scp->sc_mask &~ - (sigmask(SIGKILL)|sigmask(SIGCONT)|sigmask(SIGSTOP)); + p->p_sigmask = scp->sc_mask & ~sigcantmask; regs[tEBP] = scp->sc_fp; regs[tESP] = scp->sc_sp; regs[tEIP] = scp->sc_pc; diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index 0746c66..8fef9e8 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 - * $Id: machdep.c,v 1.211 1996/11/11 20:38:52 bde Exp $ + * $Id: machdep.c,v 1.212 1996/11/17 02:11:01 dyson Exp $ */ #include "npx.h" @@ -658,8 +658,7 @@ sigreturn(p, uap, retval) p->p_sigacts->ps_sigstk.ss_flags |= SS_ONSTACK; else p->p_sigacts->ps_sigstk.ss_flags &= ~SS_ONSTACK; - p->p_sigmask = scp->sc_mask &~ - (sigmask(SIGKILL)|sigmask(SIGCONT)|sigmask(SIGSTOP)); + p->p_sigmask = scp->sc_mask & ~sigcantmask; regs[tEBP] = scp->sc_fp; regs[tESP] = scp->sc_sp; regs[tEIP] = scp->sc_pc; |