[PATCH] ws2_32: Set return size when calling WSAIoctl with WS_SIO_GET_EXTENSION_FUNCTION_POINTER.

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Tue Jul 11 22:17:18 CDT 2017


From: Kimmo Myllyvirta <kimmo.myllyvirta at gmail.com>

Fixes: https://bugs.winehq.org/show_bug.cgi?id=43315

(Patch from staging tree)

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
 dlls/ws2_32/socket.c     | 1 +
 dlls/ws2_32/tests/sock.c | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index f212ec22e1..3f4691f02b 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -4907,6 +4907,7 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size, LPVOID
         {
             TRACE("-> got %s\n", guid_funcs[i].name);
             *(void **)out_buff = guid_funcs[i].func_ptr;
+            total = sizeof(void *);
             break;
         }
 
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index efe10b32fd..e975ea43fe 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -7677,6 +7677,7 @@ static void test_ConnectEx(void)
         goto end;
     }
 
+    bytesReturned = 0xdeadbeef;
     iret = WSAIoctl(connector, SIO_GET_EXTENSION_FUNCTION_POINTER, &connectExGuid, sizeof(connectExGuid),
         &pConnectEx, sizeof(pConnectEx), &bytesReturned, NULL, NULL);
     if (iret) {
@@ -7684,6 +7685,8 @@ static void test_ConnectEx(void)
         goto end;
     }
 
+    ok(bytesReturned == sizeof(pConnectEx), "expected sizeof(pConnectEx), got %u\n", bytesReturned);
+
     bret = pConnectEx(INVALID_SOCKET, (struct sockaddr*)&address, addrlen, NULL, 0, &bytesReturned, &overlapped);
     ok(bret == FALSE && WSAGetLastError() == WSAENOTSOCK, "ConnectEx on invalid socket "
         "returned %d + errno %d\n", bret, WSAGetLastError());
-- 
2.13.2




More information about the wine-patches mailing list