summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2018-03-02 23:33:05 +0100
committerCorinna Vinschen <corinna@vinschen.de>2018-03-02 23:33:05 +0100
commit00e87078302dcfca3b6ad04fd5af5d8f473171a9 (patch)
tree3c4455353c593855205b692ed48996bc969f9703
parent984c8beeffa912833409400fffdbfac16dd7a731 (diff)
downloadcygnal-00e87078302dcfca3b6ad04fd5af5d8f473171a9.tar.gz
cygnal-00e87078302dcfca3b6ad04fd5af5d8f473171a9.tar.bz2
cygnal-00e87078302dcfca3b6ad04fd5af5d8f473171a9.zip
Cygwin: accept4: Fix resource leak
The new implementation neglected to release the file descriptor in case of error. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r--winsup/cygwin/fhandler_socket_inet.cc2
-rw-r--r--winsup/cygwin/fhandler_socket_local.cc2
2 files changed, 4 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler_socket_inet.cc b/winsup/cygwin/fhandler_socket_inet.cc
index a3aeccc82..e65acffdf 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 844cb9d11..11f2c209e 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);