|
Message-Id: <1490185183-17680-1-git-send-email-yszhou4tech@gmail.com> Date: Wed, 22 Mar 2017 20:19:43 +0800 From: Yousong Zhou <yszhou4tech@...il.com> To: dalias@...c.org Cc: musl@...ts.openwall.com, Yousong Zhou <yszhou4tech@...il.com> Subject: [PATCH] pthread_sigmask: check 'how' only when 'set' is not NULL According to POSIX document If set is a null pointer, the value of the argument how is not significant and the thread's signal mask shall be unchanged; thus the call can be used to enquire about currently blocked signals. This is also how the current Linux kernel syscall is doing. So the following function call from binutils-gdb should not fail sigprocmask (0, NULL, &original_signal_mask); --- src/thread/pthread_sigmask.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/thread/pthread_sigmask.c b/src/thread/pthread_sigmask.c index 88c333f..f188782 100644 --- a/src/thread/pthread_sigmask.c +++ b/src/thread/pthread_sigmask.c @@ -5,7 +5,7 @@ int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict old) { int ret; - if ((unsigned)how - SIG_BLOCK > 2U) return EINVAL; + if (set && (unsigned)how - SIG_BLOCK > 2U) return EINVAL; ret = -__syscall(SYS_rt_sigprocmask, how, set, old, _NSIG/8); if (!ret && old) { if (sizeof old->__bits[0] == 8) { -- 2.6.4
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.