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

commit 00e87078302dcfca3b6ad04fd5af5d8f473171a9
Author: Corinna Vinschen <[email protected]>
Date:   Fri Mar 2 23:33:05 2018 +0100

    Cygwin: accept4: Fix resource leak
    
    The new implementation neglected to release the file descriptor
    in case of error.
    
    Signed-off-by: Corinna Vinschen <[email protected]>

Diff:
---
 winsup/cygwin/fhandler_socket_inet.cc  | 2 ++
 winsup/cygwin/fhandler_socket_local.cc | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/winsup/cygwin/fhandler_socket_inet.cc 
b/winsup/cygwin/fhandler_socket_inet.cc
index a3aeccc..e65acff 100644
--- a/winsup/cygwin/fhandler_socket_inet.cc
+++ b/winsup/cygwin/fhandler_socket_inet.cc
@@ -895,6 +895,8 @@ fhandler_socket_inet::accept4 (struct sockaddr *peer, int 
*len, int flags)
                  *len = llen;
                }
            }
+         else
+           fd.release ();
        }
       if (ret == -1)
        ::closesocket (res);
diff --git a/winsup/cygwin/fhandler_socket_local.cc 
b/winsup/cygwin/fhandler_socket_local.cc
index 844cb9d..11f2c20 100644
--- a/winsup/cygwin/fhandler_socket_local.cc
+++ b/winsup/cygwin/fhandler_socket_local.cc
@@ -1012,6 +1012,8 @@ fhandler_socket_local::accept4 (struct sockaddr *peer, 
int *len, int flags)
                  *len = (int) sizeof (un.sun_family);
                }
            }
+         else
+           fd.release ();
        }
       if (ret == -1)
        ::closesocket (res);

Reply via email to