From 76fbf6ad4bb2f697512a1541d296c1f749e3b504 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Fri, 9 Aug 2013 21:25:29 -0400 Subject: 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. --- src/signal/sigaddset.c | 2 +- src/signal/sigdelset.c | 2 +- src/signal/sigisemptyset.c | 4 ++-- src/signal/sigismember.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') 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)); } -- cgit v1.2.1