[newlib-cygwin/cygwin-3_3-branch] Cygwin: handle_sigprocmask: If new signal set is NULL, ignore "how"

Corinna Vinschen corinna@sourceware.org
Tue Mar 1 15:24:10 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=4ee19860bd0b926528dd4d8624f43cb87a76273d

commit 4ee19860bd0b926528dd4d8624f43cb87a76273d
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Tue Mar 1 14:09:56 2022 +0100

    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 <corinna@vinschen.de>

Diff:
---
 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;


More information about the Cygwin-cvs mailing list