Module: wine Branch: master Commit: ffe20add5812fc45267af22aaa2af7d4e9a39d0e URL: https://source.winehq.org/git/wine.git/?a=commit;h=ffe20add5812fc45267af22aa...
Author: Akihiro Sagawa sagawa.aki@gmail.com Date: Tue Aug 24 21:50:37 2021 +0900
ws2_32: Explicitly return WSAENOTSOCK for a file handle in getsockopt() except SO_OPENTYPE.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51671 Signed-off-by: Akihiro Sagawa sagawa.aki@gmail.com Signed-off-by: Zebediah Figura zfigura@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ws2_32/socket.c | 7 +++++++ dlls/ws2_32/tests/sock.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 30f233fa78f..f58f7cea5cc 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -1363,6 +1363,13 @@ int WINAPI getsockopt( SOCKET s, int level, int optname, char *optval, int *optl debugstr_sockopt(level, optname), debugstr_optval(optval, 0), optlen, optlen ? *optlen : 0);
+ if ((level != SOL_SOCKET || optname != SO_OPENTYPE) && + !socket_list_find( s )) + { + SetLastError( WSAENOTSOCK ); + return SOCKET_ERROR; + } + switch(level) { case SOL_SOCKET: diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index d3f2459aa3a..ec010acebc6 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -11693,8 +11693,8 @@ static void test_sockopt_validity(void) }; static const struct sockopt_validity_test file_handle_tests[] = { - { -1, WSAENOTSOCK, 0, TRUE }, - { SO_TYPE, WSAENOTSOCK, 0, TRUE }, + { -1, WSAENOTSOCK }, + { SO_TYPE, WSAENOTSOCK }, { SO_OPENTYPE }, {} };