From c78f149733899f29f5881e290b4c3cd8c23c11ef Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 1 Mar 2022 14:09:56 +0100 Subject: [PATCH] Cygwin: handle_sigprocmask: If new signal set is NULL, ignore "how" The "how" value only makes sense if a new set is given. If we only read the current signal set, ignore the value of "how" per POSIX: "If set is a null pointer, the value of the argument how is not significant" Signed-off-by: Corinna Vinschen --- winsup/cygwin/signal.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index 2cf750f5c..9b6c2509d 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -205,15 +205,15 @@ sigprocmask (int how, const sigset_t *set, sigset_t *oldset) int __reg3 handle_sigprocmask (int how, const sigset_t *set, sigset_t *oldset, sigset_t& opmask) { - /* check that how is in right range */ - if (how != SIG_BLOCK && how != SIG_UNBLOCK && how != SIG_SETMASK) + /* check that how is in right range if set is not NULL */ + if (set && how != SIG_BLOCK && how != SIG_UNBLOCK && how != SIG_SETMASK) { syscall_printf ("Invalid how value %d", how); return EINVAL; } __try - { + { if (oldset) *oldset = opmask;