diff options
Diffstat (limited to 'src/signal/sigaltstack.c')
-rw-r--r-- | src/signal/sigaltstack.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/signal/sigaltstack.c b/src/signal/sigaltstack.c index 62cb81ad..616625c5 100644 --- a/src/signal/sigaltstack.c +++ b/src/signal/sigaltstack.c @@ -1,15 +1,17 @@ #include <signal.h> #include <errno.h> +#include <unistd.h> #include "syscall.h" int sigaltstack(const stack_t *restrict ss, stack_t *restrict old) { if (ss) { - if (ss->ss_size < MINSIGSTKSZ) { + size_t min = sysconf(_SC_MINSIGSTKSZ); + if (!(ss->ss_flags & SS_DISABLE) && ss->ss_size < min) { errno = ENOMEM; return -1; } - if (ss->ss_flags & ~SS_DISABLE) { + if (ss->ss_flags & SS_ONSTACK) { errno = EINVAL; return -1; } |