coverity: #1426734

do not call close on bad fd Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
parent a49cad59
...@@ -209,7 +209,6 @@ int lxc_monitor_open(const char *lxcpath) ...@@ -209,7 +209,6 @@ int lxc_monitor_open(const char *lxcpath)
int fd; int fd;
size_t retry; size_t retry;
size_t len; size_t len;
int ret = -1;
int backoff_ms[] = {10, 50, 100}; int backoff_ms[] = {10, 50, 100};
if (lxc_monitor_sock_name(lxcpath, &addr) < 0) if (lxc_monitor_sock_name(lxcpath, &addr) < 0)
...@@ -218,16 +217,16 @@ int lxc_monitor_open(const char *lxcpath) ...@@ -218,16 +217,16 @@ int lxc_monitor_open(const char *lxcpath)
fd = socket(PF_UNIX, SOCK_STREAM, 0); fd = socket(PF_UNIX, SOCK_STREAM, 0);
if (fd < 0) { if (fd < 0) {
ERROR("Failed to create socket: %s.", strerror(errno)); ERROR("Failed to create socket: %s.", strerror(errno));
return -errno; return -1;
} }
len = strlen(&addr.sun_path[1]); len = strlen(&addr.sun_path[1]);
DEBUG("opening monitor socket %s with len %zu", &addr.sun_path[1], len); DEBUG("opening monitor socket %s with len %zu", &addr.sun_path[1], len);
if (len >= sizeof(addr.sun_path) - 1) { if (len >= sizeof(addr.sun_path) - 1) {
errno = ENAMETOOLONG; errno = ENAMETOOLONG;
ret = -errno;
ERROR("name of monitor socket too long (%zu bytes): %s", len, strerror(errno)); ERROR("name of monitor socket too long (%zu bytes): %s", len, strerror(errno));
goto on_error; close(fd);
return -1;
} }
for (retry = 0; retry < sizeof(backoff_ms) / sizeof(backoff_ms[0]); retry++) { for (retry = 0; retry < sizeof(backoff_ms) / sizeof(backoff_ms[0]); retry++) {
...@@ -239,16 +238,12 @@ int lxc_monitor_open(const char *lxcpath) ...@@ -239,16 +238,12 @@ int lxc_monitor_open(const char *lxcpath)
} }
if (fd < 0) { if (fd < 0) {
ret = -errno;
ERROR("Failed to connect to monitor socket: %s.", strerror(errno)); ERROR("Failed to connect to monitor socket: %s.", strerror(errno));
goto on_error; close(fd);
return -1;
} }
return fd; return fd;
on_error:
close(fd);
return ret;
} }
int lxc_monitor_read_fdset(struct pollfd *fds, nfds_t nfds, struct lxc_msg *msg, int lxc_monitor_read_fdset(struct pollfd *fds, nfds_t nfds, struct lxc_msg *msg,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment