From: Christian Brauner Date: Fri, 25 Aug 2017 05:11:26 +0000 (+0200) Subject: af_unix: non-functional changes X-Git-Tag: lxc-2.0.9~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd64caf5c62e32c83e21b6f5c9505fc04028a4e6;p=thirdparty%2Flxc.git af_unix: non-functional changes Signed-off-by: Christian Brauner --- diff --git a/src/lxc/af_unix.c b/src/lxc/af_unix.c index c354637b1..01e86aaef 100644 --- a/src/lxc/af_unix.c +++ b/src/lxc/af_unix.c @@ -38,7 +38,7 @@ lxc_log_define(lxc_af_unix, lxc); int lxc_abstract_unix_open(const char *path, int type, int flags) { - int fd; + int fd, ret; size_t len; struct sockaddr_un addr; @@ -64,18 +64,24 @@ int lxc_abstract_unix_open(const char *path, int type, int flags) /* addr.sun_path[0] has already been set to 0 by memset() */ strncpy(&addr.sun_path[1], &path[1], strlen(&path[1])); - if (bind(fd, (struct sockaddr *)&addr, offsetof(struct sockaddr_un, sun_path) + len + 1)) { + ret = bind(fd, (struct sockaddr *)&addr, + offsetof(struct sockaddr_un, sun_path) + len + 1); + if (ret < 0) { int tmp = errno; close(fd); errno = tmp; return -1; } - if (type == SOCK_STREAM && listen(fd, 100)) { - int tmp = errno; - close(fd); - errno = tmp; - return -1; + if (type == SOCK_STREAM) { + ret = listen(fd, 100); + if (ret < 0) { + int tmp = errno; + close(fd); + errno = tmp; + return -1; + } + } return fd; @@ -84,13 +90,12 @@ int lxc_abstract_unix_open(const char *path, int type, int flags) int lxc_abstract_unix_close(int fd) { close(fd); - return 0; } int lxc_abstract_unix_connect(const char *path) { - int fd; + int fd, ret; size_t len; struct sockaddr_un addr; @@ -112,7 +117,9 @@ int lxc_abstract_unix_connect(const char *path) /* addr.sun_path[0] has already been set to 0 by memset() */ strncpy(&addr.sun_path[1], &path[1], strlen(&path[1])); - if (connect(fd, (struct sockaddr *)&addr, offsetof(struct sockaddr_un, sun_path) + len + 1)) { + ret = connect(fd, (struct sockaddr *)&addr, + offsetof(struct sockaddr_un, sun_path) + len + 1); + if (ret < 0) { close(fd); return -1; } @@ -205,13 +212,11 @@ out: int lxc_abstract_unix_send_credential(int fd, void *data, size_t size) { - struct msghdr msg = { 0 }; + struct msghdr msg = {0}; struct iovec iov; struct cmsghdr *cmsg; struct ucred cred = { - .pid = getpid(), - .uid = getuid(), - .gid = getgid(), + .pid = getpid(), .uid = getuid(), .gid = getgid(), }; char cmsgbuf[CMSG_SPACE(sizeof(cred))] = {0}; char buf[1] = {0}; @@ -238,7 +243,7 @@ int lxc_abstract_unix_send_credential(int fd, void *data, size_t size) int lxc_abstract_unix_rcv_credential(int fd, void *data, size_t size) { - struct msghdr msg = { 0 }; + struct msghdr msg = {0}; struct iovec iov; struct cmsghdr *cmsg; struct ucred cred; @@ -263,10 +268,11 @@ int lxc_abstract_unix_rcv_credential(int fd, void *data, size_t size) cmsg = CMSG_FIRSTHDR(&msg); if (cmsg && cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred)) && - cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_CREDENTIALS) { + cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_CREDENTIALS) { memcpy(&cred, CMSG_DATA(cmsg), sizeof(cred)); - if (cred.uid && (cred.uid != getuid() || cred.gid != getgid())) { + if (cred.uid && + (cred.uid != getuid() || cred.gid != getgid())) { INFO("message denied for '%d/%d'", cred.uid, cred.gid); return -EACCES; } diff --git a/src/lxc/af_unix.h b/src/lxc/af_unix.h index fafa225b5..9dfccd16e 100644 --- a/src/lxc/af_unix.h +++ b/src/lxc/af_unix.h @@ -38,4 +38,4 @@ extern int lxc_abstract_unix_recv_fds(int fd, int *recvfds, int num_recvfds, extern int lxc_abstract_unix_send_credential(int fd, void *data, size_t size); extern int lxc_abstract_unix_rcv_credential(int fd, void *data, size_t size); -#endif +#endif /* __LXC_AF_UNIX_H */