]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
network: reap child in all cases
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 1 Nov 2017 20:52:07 +0000 (21:52 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 3 Nov 2017 07:37:09 +0000 (08:37 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/network.c

index c0ca99d40e63b60ce0a9c524b0fe4ea752345b6a..b4379d0f9ae0472fe132cd68b057f1389306748f 100644 (file)
@@ -2126,13 +2126,13 @@ static int lxc_create_network_unpriv_exec(const char *lxcpath, const char *lxcna
        if (bytes < 0) {
                SYSERROR("Failed to read from pipe file descriptor");
                close(pipefd[0]);
-               return -1;
+       } else {
+               buffer[bytes - 1] = '\0';
        }
-       buffer[bytes - 1] = '\0';
 
        ret = wait_for_pid(child);
        close(pipefd[0]);
-       if (ret != 0) {
+       if (ret != 0 || bytes < 0) {
                ERROR("lxc-user-nic failed to configure requested network: %s",
                      buffer[0] != '\0' ? buffer : "(null)");
                return -1;
@@ -2267,19 +2267,18 @@ static int lxc_delete_network_unpriv_exec(const char *lxcpath, const char *lxcna
        if (bytes < 0) {
                SYSERROR("Failed to read from pipe file descriptor.");
                close(pipefd[0]);
-               return -1;
+       } else {
+               buffer[bytes - 1] = '\0';
        }
-       buffer[bytes - 1] = '\0';
 
-       if (wait_for_pid(child) != 0) {
+       ret = wait_for_pid(child);
+       close(pipefd[0]);
+       if (ret != 0 || bytes < 0) {
                ERROR("lxc-user-nic failed to delete requested network: %s",
                      buffer[0] != '\0' ? buffer : "(null)");
-               close(pipefd[0]);
                return -1;
        }
 
-       close(pipefd[0]);
-
        return 0;
 }