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);
