]> git.proxmox.com Git - mirror_lxc.git/commitdiff
commands: use __do_close_prot_errno
authorChristian Brauner <christian.brauner@ubuntu.com>
Sun, 17 Feb 2019 13:32:14 +0000 (14:32 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Mon, 18 Feb 2019 14:24:13 +0000 (15:24 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/commands.c

index 8a7b41fe8aceb8f4b39baefe56bfbb8259eae999..bf17d739eda0da2069c6fcffd870385765d0eb7b 100644 (file)
@@ -232,7 +232,7 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp)
 static int lxc_cmd_send(const char *name, struct lxc_cmd_rr *cmd,
                        const char *lxcpath, const char *hashed_sock_name)
 {
-       int client_fd, saved_errno;
+       __do_close_prot_errno int client_fd = -EBADF;
        ssize_t ret = -1;
 
        client_fd = lxc_cmd_connect(name, lxcpath, hashed_sock_name, "command");
@@ -242,25 +242,18 @@ static int lxc_cmd_send(const char *name, struct lxc_cmd_rr *cmd,
        ret = lxc_abstract_unix_send_credential(client_fd, &cmd->req,
                                                sizeof(cmd->req));
        if (ret < 0 || (size_t)ret != sizeof(cmd->req))
-               goto on_error;
+               return -1;
 
        if (cmd->req.datalen <= 0)
-               return client_fd;
+               return steal_fd(client_fd);
 
        errno = EMSGSIZE;
        ret = lxc_send_nointr(client_fd, (void *)cmd->req.data,
                              cmd->req.datalen, MSG_NOSIGNAL);
        if (ret < 0 || ret != (ssize_t)cmd->req.datalen)
-               goto on_error;
-
-       return client_fd;
-
-on_error:
-       saved_errno = errno;
-       close(client_fd);
-       errno = saved_errno;
+               return -1;
 
-       return -1;
+       return steal_fd(client_fd);
 }
 
 /*