diff options
author | Rich Felker <dalias@aerifal.cx> | 2021-07-29 23:24:58 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2021-07-29 23:24:58 -0400 |
commit | 3f701faace7addc75d16dea8a6cd769fa5b3f260 (patch) | |
tree | 74f78ed6b69430ed3ca78f75eaf6ffdff6a67415 | |
parent | 0fbd7d6683d04dcaa636df53e7fce69ece746241 (diff) | |
download | musl-3f701faace7addc75d16dea8a6cd769fa5b3f260.tar.gz musl-3f701faace7addc75d16dea8a6cd769fa5b3f260.tar.bz2 musl-3f701faace7addc75d16dea8a6cd769fa5b3f260.tar.xz musl-3f701faace7addc75d16dea8a6cd769fa5b3f260.zip |
fix libc-internal signal blocking on mips archs
due to historical reasons, the mips signal set has 128 bits rather
than 64 like on every other arch. this was special-cased correctly, at
least for 32-bit mips, at one time, but was inadvertently broken in
commit 7c440977db9444d7e6b1c3dcb1fdf4ee49ca4158, and seems never to
have been right on mips64/n32.
as consequenct of this bug, applications making use of high realtime
signal numbers on mips may have been able to execute application code
in contexts where doing so was unsafe.
-rw-r--r-- | src/signal/block.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/signal/block.c b/src/signal/block.c index d7f61001..cc8698f0 100644 --- a/src/signal/block.c +++ b/src/signal/block.c @@ -3,9 +3,9 @@ #include <signal.h> static const unsigned long all_mask[] = { -#if ULONG_MAX == 0xffffffff && _NSIG == 129 +#if ULONG_MAX == 0xffffffff && _NSIG > 65 -1UL, -1UL, -1UL, -1UL -#elif ULONG_MAX == 0xffffffff +#elif ULONG_MAX == 0xffffffff || _NSIG > 65 -1UL, -1UL #else -1UL |