diff options
author | Rich Felker <dalias@aerifal.cx> | 2013-08-09 21:25:29 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2013-08-09 21:25:29 -0400 |
commit | 76fbf6ad4bb2f697512a1541d296c1f749e3b504 (patch) | |
tree | 243dab65e7e8f30633c516330d3540ea620fc135 /src | |
parent | 3c5c5e6f926feea7b823a96c2872885b100fe31f (diff) | |
download | musl-76fbf6ad4bb2f697512a1541d296c1f749e3b504.zip musl-76fbf6ad4bb2f697512a1541d296c1f749e3b504.tar.gz musl-76fbf6ad4bb2f697512a1541d296c1f749e3b504.tar.bz2 |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/signal/sigaddset.c | 2 | ||||
-rw-r--r-- | src/signal/sigdelset.c | 2 | ||||
-rw-r--r-- | src/signal/sigisemptyset.c | 4 | ||||
-rw-r--r-- | src/signal/sigismember.c | 2 |
4 files changed, 5 insertions, 5 deletions
diff --git a/src/signal/sigaddset.c b/src/signal/sigaddset.c index edb48d1..085d1f4 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 a77c638..ce69280 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 e241051..312c66c 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 1a22108..dd1a8db 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)); } |