aboutsummaryrefslogtreecommitdiff
path: root/src
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 /src
parent3c5c5e6f926feea7b823a96c2872885b100fe31f (diff)
downloadmusl-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.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 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));
}