[v2 PATCH] ws2_32: accept addrlen32 parameter is optional
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Tue Sep 6 20:54:02 CDT 2016
v2: Correctly close previous sockets.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/ws2_32/socket.c | 2 +-
dlls/ws2_32/tests/sock.c | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 79ccfc2..38fa62f 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -2653,7 +2653,7 @@ SOCKET WINAPI WS_accept(SOCKET s, struct WS_sockaddr *addr, int *addrlen32)
SERVER_END_REQ;
if (!status)
{
- if (addr && WS_getpeername(as, addr, addrlen32))
+ if (addr && addrlen32 && WS_getpeername(as, addr, addrlen32))
{
WS_closesocket(as);
return SOCKET_ERROR;
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 2640dd4..903aa2e 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -4199,6 +4199,18 @@ static void test_accept(void)
ok(accepted != INVALID_SOCKET, "Failed to accept connection, %d\n", WSAGetLastError());
ok(socklen != sizeof(ss), "unexpected length\n");
ok(ss.ss_family, "family not set\n");
+ closesocket(accepted);
+ closesocket(connector);
+ accepted = connector = INVALID_SOCKET;
+
+ socklen = sizeof(address);
+ connector = setup_connector_socket(&address, socklen, FALSE);
+ if (connector == INVALID_SOCKET) goto done;
+
+ memset(&ss, 0, sizeof(ss));
+ accepted = accept(server_socket, (struct sockaddr *)&ss, NULL);
+ ok(accepted != INVALID_SOCKET, "Failed to accept connection, %d\n", WSAGetLastError());
+ ok(!ss.ss_family, "family not set\n");
done:
if (accepted != INVALID_SOCKET)
--
2.9.3
More information about the wine-patches
mailing list