Paul Gofman : ws2_32/tests: Add tests for bigger option value in test_set_getsockopt().

Alexandre Julliard julliard at winehq.org
Mon Mar 7 16:04:58 CST 2022


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

Author: Paul Gofman <pgofman at codeweavers.com>
Date:   Sat Mar  5 22:04:09 2022 +0300

ws2_32/tests: Add tests for bigger option value in test_set_getsockopt().

Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ws2_32/tests/sock.c | 49 ++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 43 insertions(+), 6 deletions(-)

diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 6e492ffbb61..1fc8d132b63 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -1164,15 +1164,17 @@ static void test_set_getsockopt(void)
         BOOL accepts_short_len;
         unsigned int sizes[3];
         DWORD values[3];
+        BOOL accepts_large_value;
+        BOOL bool_value;
     }
     test_optsize[] =
     {
-        {AF_INET, SOCK_STREAM, SOL_SOCKET, SO_RCVTIMEO, FALSE, {1, 2, 4}},
-        {AF_INET, SOCK_STREAM, SOL_SOCKET, SO_SNDTIMEO, FALSE, {1, 2, 4}},
-        {AF_INET, SOCK_DGRAM, IPPROTO_IP, IP_MULTICAST_LOOP, TRUE, {1, 1, 4}},
-        {AF_INET, SOCK_DGRAM, IPPROTO_IP, IP_MULTICAST_TTL, TRUE, {1, 1, 4}},
-        {AF_INET, SOCK_DGRAM, IPPROTO_IP, IP_TOS, TRUE, {1, 1, 4}},
-        {AF_INET, SOCK_DGRAM, IPPROTO_IP, IP_TTL, TRUE, {1, 1, 4}},
+        {AF_INET, SOCK_STREAM, SOL_SOCKET, SO_RCVTIMEO, FALSE, {1, 2, 4}, {0}, TRUE},
+        {AF_INET, SOCK_STREAM, SOL_SOCKET, SO_SNDTIMEO, FALSE, {1, 2, 4}, {0}, TRUE},
+        {AF_INET, SOCK_DGRAM, IPPROTO_IP, IP_MULTICAST_LOOP, TRUE, {1, 1, 4}, {0}, TRUE, TRUE},
+        {AF_INET, SOCK_DGRAM, IPPROTO_IP, IP_MULTICAST_TTL, TRUE, {1, 1, 4}, {0}, FALSE},
+        {AF_INET, SOCK_DGRAM, IPPROTO_IP, IP_TOS, TRUE, {1, 1, 4}, {0}, FALSE},
+        {AF_INET, SOCK_DGRAM, IPPROTO_IP, IP_TTL, TRUE, {1, 1, 4}, {0}, FALSE},
     };
     SOCKET s, s2;
     int i, j, err, lasterr;
@@ -1457,6 +1459,41 @@ static void test_set_getsockopt(void)
         }
         ok(size == (test_optsize[i].optname == SO_OPENTYPE ? 4 : -1), "Got unexpected size %d.\n", size);
 
+        expected_size = test_optsize[i].sizes[2];
+        if (expected_size == 1)
+            expected_value = 0xdeadbe00;
+        else
+            expected_value = test_optsize[i].bool_value ? 0x1 : 0x100;
+        if (test_optsize[i].accepts_large_value)
+        {
+            expected_err = 0;
+            expected_last_error = 0;
+        }
+        else
+        {
+            expected_err = -1;
+            expected_last_error = WSAEINVAL;
+        }
+
+        value = 0x100;
+        SetLastError(0xdeadbeef);
+        err = setsockopt(s2, test_optsize[i].level, test_optsize[i].optname, (char*)&value, 4);
+        ok(err == expected_err, "Unexpected setsockopt result %d.\n", err);
+        ok(WSAGetLastError() == expected_last_error, "Unexpected WSAGetLastError() %u.\n", WSAGetLastError());
+
+        if (test_optsize[i].accepts_large_value)
+        {
+            value = 0xdeadbeef;
+            SetLastError(0xdeadbeef);
+            size = 4;
+            err = getsockopt(s2, test_optsize[i].level, test_optsize[i].optname, (char*)&value, &size);
+            ok(err == expected_err, "Unexpected getsockopt result %d.\n", err);
+            ok(WSAGetLastError() == expected_last_error, "Unexpected WSAGetLastError() %u.\n", WSAGetLastError());
+            todo_wine_if(test_optsize[i].optname == SO_DONTROUTE || test_optsize[i].optname == SO_LINGER)
+            ok(value == expected_value, "Got unexpected value %#x, expected %#x.\n", value, expected_value);
+            ok(size == expected_size, "Got unexpected size %u, expected %u.\n", size, expected_size);
+        }
+
         winetest_pop_context();
 
         for (j = 0; j < ARRAY_SIZE(test_optsize[i].sizes); ++j)




More information about the wine-cvs mailing list