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 /src | |
parent | 0fbd7d6683d04dcaa636df53e7fce69ece746241 (diff) | |
download | musl-3f701faace7addc75d16dea8a6cd769fa5b3f260.tar.gz 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.
Diffstat (limited to 'src')
-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 |