From c694055a601c8b0417c2e8d0489e252ec835c6e5 Mon Sep 17 00:00:00 2001 From: Don Porter Date: Sun, 20 Nov 2016 20:21:03 -0500 Subject: [PATCH] Merge branch 'master' of git://github.com/woonhak/graphene into woonhak-master --- LibOS/shim/src/sys/shim_socket.c | 25 +++++++++++++----------- LibOS/shim/test/native/manifest.template | 2 ++ LibOS/shim/test/native/unix.c | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/LibOS/shim/src/sys/shim_socket.c b/LibOS/shim/src/sys/shim_socket.c index 14febf03..5ac7b6b5 100644 --- a/LibOS/shim/src/sys/shim_socket.c +++ b/LibOS/shim/src/sys/shim_socket.c @@ -450,13 +450,14 @@ int shim_do_bind (int sockfd, struct sockaddr * addr, socklen_t addrlen) sock->addr.un.data = data; sock->addr.un.dentry = dent; } + else { /* AF_INET/INET6 case */ + if (addrlen != ((sock->domain == AF_INET) ? sizeof(struct sockaddr_in) : + sizeof(struct sockaddr_in6))) + goto out; - if (addrlen != ((sock->domain == AF_INET) ? sizeof(struct sockaddr_in) : - sizeof(struct sockaddr_in6))) - goto out; - - inet_save_addr(sock->domain, &sock->addr.in.bind, addr); - inet_rebase_port(false, sock->domain, &sock->addr.in.bind, true); + inet_save_addr(sock->domain, &sock->addr.in.bind, addr); + inet_rebase_port(false, sock->domain, &sock->addr.in.bind, true); + } sock->sock_state = SOCK_BOUND; @@ -699,12 +700,14 @@ int shim_do_connect (int sockfd, struct sockaddr * addr, int addrlen) hdl->pal_handle = NULL; } - if (addrlen != ((sock->domain == AF_INET) ? sizeof(struct sockaddr_in) : - sizeof(struct sockaddr_in6))) - goto out; + if (sock->domain != AF_UNIX) { + if (addrlen != ((sock->domain == AF_INET) ? sizeof(struct sockaddr_in) : + sizeof(struct sockaddr_in6))) + goto out; - inet_save_addr(sock->domain, &sock->addr.in.conn, addr); - inet_rebase_port(false, sock->domain, &sock->addr.in.conn, false); + inet_save_addr(sock->domain, &sock->addr.in.conn, addr); + inet_rebase_port(false, sock->domain, &sock->addr.in.conn, false); + } sock->sock_state = (state == SOCK_BOUND) ? SOCK_BOUNDCONNECTED : SOCK_CONNECTED; diff --git a/LibOS/shim/test/native/manifest.template b/LibOS/shim/test/native/manifest.template index f08023bc..249e10c0 100644 --- a/LibOS/shim/test/native/manifest.template +++ b/LibOS/shim/test/native/manifest.template @@ -27,3 +27,5 @@ sgx.trusted_files.libm = file:$(LIBCDIR)/libm.so.6 sgx.trusted_files.libpthread = file:$(LIBCDIR)/libpthread.so.0 sgx.trusted_files.victim = file:exec_victim sgx.trusted_children.victim = file:exec_victim.sig + +sgx.trusted_files.unix_pipe = file:unix.c diff --git a/LibOS/shim/test/native/unix.c b/LibOS/shim/test/native/unix.c index 421fea4f..c5cbb829 100644 --- a/LibOS/shim/test/native/unix.c +++ b/LibOS/shim/test/native/unix.c @@ -151,7 +151,7 @@ int client(void) int main(int argc, char ** argv) { char fnamebuf[40]; - strcpy(fnamebuf, argv[0]); + strcpy(fnamebuf, "unix"); strcat(fnamebuf, ".c"); fname = fnamebuf;