Browse Source

[Pal/Linux-SGX] Initialize socket options to zero and reuseaddr to 1

This commit fixes uninitialized variable sock_options in tcp_connect(),
tcp_listen(), tcp_accept(), udp_bind(), and udp_connect().
Martin Schmatz 5 years ago
parent
commit
b6d327edac
1 changed files with 20 additions and 0 deletions
  1. 20 0
      Pal/src/host/Linux-SGX/db_sockets.c

+ 20 - 0
Pal/src/host/Linux-SGX/db_sockets.c

@@ -351,6 +351,10 @@ static int tcp_listen (PAL_HANDLE * handle, char * uri, int options)
 #endif
 
     struct sockopt sock_options;
+
+    memset(&sock_options, 0, sizeof(sock_options));
+    sock_options.reuseaddr = 1;  /* sockets are always set as reusable in Graphene */
+
     ret = ocall_sock_listen(bind_addr->sa_family,
                             sock_type(SOCK_STREAM, options), 0,
                             bind_addr, &bind_addrlen,
@@ -386,6 +390,10 @@ static int tcp_accept (PAL_HANDLE handle, PAL_HANDLE * client)
     int ret = 0;
 
     struct sockopt sock_options;
+
+    memset(&sock_options, 0, sizeof(sock_options));
+    sock_options.reuseaddr = 1;  /* sockets are always set as reusable in Graphene */
+
     ret = ocall_sock_accept(handle->sock.fd, &dest_addr, &dest_addrlen,
                             &sock_options);
     if (IS_ERR(ret))
@@ -433,6 +441,10 @@ static int tcp_connect (PAL_HANDLE * handle, char * uri, int options)
 
 
     struct sockopt sock_options;
+
+    memset(&sock_options, 0, sizeof(sock_options));
+    sock_options.reuseaddr = 1;  /* sockets are always set as reusable in Graphene */
+
     ret = ocall_sock_connect(dest_addr->sa_family,
                              sock_type(SOCK_STREAM, options), 0,
                              dest_addr, dest_addrlen,
@@ -562,6 +574,10 @@ static int udp_bind (PAL_HANDLE * handle, char * uri, int options)
 #endif
 
     struct sockopt sock_options;
+
+    memset(&sock_options, 0, sizeof(sock_options));
+    sock_options.reuseaddr = 1;  /* sockets are always set as reusable in Graphene */
+
     ret = ocall_sock_listen(bind_addr->sa_family,
                             sock_type(SOCK_DGRAM, options), 0,
                             bind_addr, &bind_addrlen, &sock_options);
@@ -600,6 +616,10 @@ static int udp_connect (PAL_HANDLE * handle, char * uri, int options)
 #endif
 
     struct sockopt sock_options;
+
+    memset(&sock_options, 0, sizeof(sock_options));
+    sock_options.reuseaddr = 1;  /* sockets are always set as reusable in Graphene */
+
     ret = ocall_sock_connect(dest_addr ? dest_addr->sa_family : AF_INET,
                              sock_type(SOCK_DGRAM, options), 0,
                              dest_addr, dest_addrlen,