Forráskód Böngészése

[Pal/{Linux, Linux-SGX}] Add NULL check in udp_connect/sgx_ocall_sock_connect

This patch also adds a UDP LibOS regression test.
Isaku Yamahata 6 éve
szülő
commit
0a8f97af5a

+ 24 - 0
LibOS/shim/test/regression/80_udp.py

@@ -0,0 +1,24 @@
+import sys
+from regression import Regression
+
+loader = sys.argv[1]
+
+# Running udp
+regression = Regression(loader, "udp", None)
+
+regression.add_check(name="udp",
+    check=lambda res:
+      "Data: This is packet 0" in res[0].out and
+      "Data: This is packet 1" in res[0].out and
+      "Data: This is packet 2" in res[0].out and
+      "Data: This is packet 3" in res[0].out and
+      "Data: This is packet 4" in res[0].out and
+      "Data: This is packet 5" in res[0].out and
+      "Data: This is packet 6" in res[0].out and
+      "Data: This is packet 7" in res[0].out and
+      "Data: This is packet 8" in res[0].out and
+      "Data: This is packet 9" in res[0].out)
+
+rv = regression.run_checks()
+if rv:
+    sys.exit(rv)

+ 0 - 0
LibOS/shim/test/native/udp.c → LibOS/shim/test/regression/udp.c


+ 1 - 1
Pal/src/host/Linux-SGX/sgx_enclave.c

@@ -365,7 +365,7 @@ static int sgx_ocall_sock_connect(void * pms)
         goto err;
 
     fd = ret;
-    if (ms->ms_addr->sa_family == AF_INET6) {
+    if (ms->ms_addr && ms->ms_addr->sa_family == AF_INET6) {
         int ipv6only = 1;
         INLINE_SYSCALL(setsockopt, 5, fd, SOL_IPV6, IPV6_V6ONLY, &ipv6only,
                        sizeof(int));

+ 1 - 1
Pal/src/host/Linux/db_sockets.c

@@ -743,7 +743,7 @@ static int udp_connect (PAL_HANDLE * handle, char * uri, int options)
     if (IS_ERR(fd))
         return -PAL_ERROR_DENIED;
 
-    if (dest_addr->sa_family == AF_INET6) {
+    if (dest_addr && dest_addr->sa_family == AF_INET6) {
         int ipv6only = 1;
         INLINE_SYSCALL(setsockopt, 5, fd, SOL_IPV6, IPV6_V6ONLY, &ipv6only,
                        sizeof(int));