Commit 5a8ccc15 authored by Paul Gofman's avatar Paul Gofman Committed by Alexandre Julliard

ws2_32: Check for valid socket in WSAGetOverlappedResult().

parent 94dc5714
...@@ -3626,6 +3626,12 @@ BOOL WINAPI WSAGetOverlappedResult( SOCKET s, LPWSAOVERLAPPED lpOverlapped, ...@@ -3626,6 +3626,12 @@ BOOL WINAPI WSAGetOverlappedResult( SOCKET s, LPWSAOVERLAPPED lpOverlapped,
return FALSE; return FALSE;
} }
if (!socket_list_find( s ))
{
SetLastError( WSAENOTSOCK );
return FALSE;
}
status = lpOverlapped->Internal; status = lpOverlapped->Internal;
if (status == STATUS_PENDING) if (status == STATUS_PENDING)
{ {
......
...@@ -11848,6 +11848,7 @@ static void test_WSAGetOverlappedResult(void) ...@@ -11848,6 +11848,7 @@ static void test_WSAGetOverlappedResult(void)
NTSTATUS status; NTSTATUS status;
unsigned int i; unsigned int i;
SOCKET s; SOCKET s;
HANDLE h;
BOOL ret; BOOL ret;
static const NTSTATUS ranges[][2] = static const NTSTATUS ranges[][2] =
...@@ -11862,8 +11863,20 @@ static void test_WSAGetOverlappedResult(void) ...@@ -11862,8 +11863,20 @@ static void test_WSAGetOverlappedResult(void)
{0xd0070000, 0xd0080000}, {0xd0070000, 0xd0080000},
}; };
WSASetLastError(0xdeadbeef);
ret = WSAGetOverlappedResult(0xdeadbeef, &overlapped, &size, FALSE, &flags);
ok(!ret, "got %d.\n", ret);
ok(WSAGetLastError() == WSAENOTSOCK, "got %u.\n", WSAGetLastError());
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
ret = DuplicateHandle(GetCurrentProcess(), (HANDLE)s, GetCurrentProcess(), &h, 0, FALSE, DUPLICATE_SAME_ACCESS);
ok(ret, "got %d.\n", ret);
ret = WSAGetOverlappedResult((SOCKET)h, &overlapped, &size, FALSE, &flags);
ok(!ret, "got %d.\n", ret);
ok(WSAGetLastError() == WSAENOTSOCK, "got %u.\n", WSAGetLastError());
CloseHandle(h);
for (i = 0; i < ARRAY_SIZE(ranges); ++i) for (i = 0; i < ARRAY_SIZE(ranges); ++i)
{ {
for (status = ranges[i][0]; status < ranges[i][1]; ++status) for (status = ranges[i][0]; status < ranges[i][1]; ++status)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment