Akihiro Sagawa : ws2_32: Explicitly return WSAENOTSOCK for a file handle in getsockopt() except SO_OPENTYPE.

Alexandre Julliard julliard at winehq.org
Tue Aug 24 15:56:11 CDT 2021


Module: wine
Branch: master
Commit: ffe20add5812fc45267af22aaa2af7d4e9a39d0e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=ffe20add5812fc45267af22aaa2af7d4e9a39d0e

Author: Akihiro Sagawa <sagawa.aki at 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 at gmail.com>
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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                                                   },
         {}
     };




More information about the wine-cvs mailing list