This patch also adds a UDP LibOS regression test.
@@ -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)
@@ -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));
@@ -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) {