X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fsignal%2Fsigprocmask.c;h=96d084783787fb6bc76d525c66ddc5fa4090cb38;hb=685e40bb09f5f24a2af54ea09c97328808f76990;hp=db27f12a8ff58782c388a5f4528d5e906cfaa2dc;hpb=a49c119276742d7d212fb88f83a8f559ca549e72;p=musl diff --git a/src/signal/sigprocmask.c b/src/signal/sigprocmask.c index db27f12a..96d08478 100644 --- a/src/signal/sigprocmask.c +++ b/src/signal/sigprocmask.c @@ -1,4 +1,5 @@ #include +#include #include "syscall.h" #include "libc.h" #include "pthread_impl.h" @@ -11,8 +12,12 @@ int __libc_sigprocmask(int how, const sigset_t *set, sigset_t *old) int __sigprocmask(int how, const sigset_t *set, sigset_t *old) { sigset_t tmp; + if (how > 2U) { + errno = EINVAL; + return -1; + } /* Disallow blocking thread control signals */ - if (how != SIG_UNBLOCK) { + if (set && how != SIG_UNBLOCK) { tmp = *set; set = &tmp; sigdelset(&tmp, SIGCANCEL); @@ -22,4 +27,3 @@ int __sigprocmask(int how, const sigset_t *set, sigset_t *old) } weak_alias(__sigprocmask, sigprocmask); -weak_alias(__sigprocmask, pthread_sigmask);