summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-08-09 21:25:29 -0400
committerRich Felker <dalias@aerifal.cx>2013-08-09 21:25:29 -0400
commit76fbf6ad4bb2f697512a1541d296c1f749e3b504 (patch)
tree243dab65e7e8f30633c516330d3540ea620fc135
parent3c5c5e6f926feea7b823a96c2872885b100fe31f (diff)
downloadmusl-76fbf6ad4bb2f697512a1541d296c1f749e3b504.tar.gz
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.
-rw-r--r--src/signal/sigaddset.c2
-rw-r--r--src/signal/sigdelset.c2
-rw-r--r--src/signal/sigisemptyset.c4
-rw-r--r--src/signal/sigismember.c2
4 files changed, 5 insertions, 5 deletions
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));
}