diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-03-12 09:50:19 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-04-21 15:10:10 -0300 |
commit | 566e10aa7292bacd74d229ca6f2cd9e8c8ba8748 (patch) | |
tree | 8418dc7134fe1223d7f74db7d602521a4b5afa11 /sysdeps/unix/sysv/linux/sigpending.c | |
parent | 2f6fa80147f0cf74c0d411a0e07c5655deb436b3 (diff) | |
download | glibc-566e10aa7292bacd74d229ca6f2cd9e8c8ba8748.tar.gz glibc-566e10aa7292bacd74d229ca6f2cd9e8c8ba8748.tar.xz glibc-566e10aa7292bacd74d229ca6f2cd9e8c8ba8748.zip |
signal: Only handle on NSIG signals on signal functions (BZ #25657)
The upper bits of the sigset_t s not fully initialized in the signal mask calls that return information from kernel (sigprocmask, sigpending, and pthread_sigmask), since the exported sigset_t size (1024 bits) is larger than Linux support one (64 or 128 bits). It might make sigisemptyset/sigorset/sigandset fail if the mask is filled prior the call. This patch changes the internal signal function to handle up to supported Linux signal number (_NSIG), the remaining bits are untouched. Checked on x86_64-linux-gnu and i686-linux-gnu.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sigpending.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/sigpending.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/sysdeps/unix/sysv/linux/sigpending.c b/sysdeps/unix/sysv/linux/sigpending.c index f6bedb5182..458a3cf99e 100644 --- a/sysdeps/unix/sysv/linux/sigpending.c +++ b/sysdeps/unix/sysv/linux/sigpending.c @@ -15,13 +15,9 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <errno.h> #include <signal.h> -#include <unistd.h> - #include <sysdep.h> -#include <sys/syscall.h> - +#include <sigsetops.h> /* Change the set of blocked signals to SET, wait until a signal arrives, and restore the set of blocked signals. */ |