From: Rich Felker Date: Sat, 10 Aug 2013 01:25:29 +0000 (-0400) Subject: change sigset_t functions to restrict to _NSIG X-Git-Tag: v0.9.13~70 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=76fbf6ad4bb2f697512a1541d296c1f749e3b504;p=oweals%2Fmusl.git change sigset_t functions to restrict to _NSIG the idea here is to avoid advertising signals that don't exist and to make these functions safe to call (e.g. from within other parts of the implementation) on fake sigset_t objects which do not have the HURD padding. --- diff --git a/src/signal/sigaddset.c b/src/signal/sigaddset.c index edb48d1c..085d1f4a 100644 --- a/src/signal/sigaddset.c +++ b/src/signal/sigaddset.c @@ -4,7 +4,7 @@ int sigaddset(sigset_t *set, int sig) { unsigned s = sig-1; - if (s >= 8*sizeof(sigset_t) || sig-32U<3) { + if (s >= _NSIG-1 || sig-32U < 3) { errno = EINVAL; return -1; } diff --git a/src/signal/sigdelset.c b/src/signal/sigdelset.c index a77c638f..ce69280e 100644 --- a/src/signal/sigdelset.c +++ b/src/signal/sigdelset.c @@ -4,7 +4,7 @@ int sigdelset(sigset_t *set, int sig) { unsigned s = sig-1; - if (s >= 8*sizeof(sigset_t) || sig-32U<3) { + if (s >= _NSIG-1 || sig-32U < 3) { errno = EINVAL; return -1; } diff --git a/src/signal/sigisemptyset.c b/src/signal/sigisemptyset.c index e2410514..312c66cf 100644 --- a/src/signal/sigisemptyset.c +++ b/src/signal/sigisemptyset.c @@ -4,6 +4,6 @@ int sigisemptyset(const sigset_t *set) { - static const sigset_t zeroset; - return !memcmp(set, &zeroset, 8); + static const unsigned long zeroset[_NSIG/8/sizeof(long)]; + return !memcmp(set, &zeroset, _NSIG/8); } diff --git a/src/signal/sigismember.c b/src/signal/sigismember.c index 1a22108b..dd1a8dbe 100644 --- a/src/signal/sigismember.c +++ b/src/signal/sigismember.c @@ -4,6 +4,6 @@ int sigismember(const sigset_t *set, int sig) { unsigned s = sig-1; - if (s >= 8*sizeof(sigset_t)) return 0; + if (s >= _NSIG-1) return 0; return !!(set->__bits[s/8/sizeof *set->__bits] & 1UL<<(s&8*sizeof *set->__bits-1)); }