From: Christian Brauner Date: Wed, 1 Nov 2017 20:52:07 +0000 (+0100) Subject: network: reap child in all cases X-Git-Tag: lxc-2.0.10~600 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12f39bdb6509717126532a00668f36b3d681b8a9;p=thirdparty%2Flxc.git network: reap child in all cases Signed-off-by: Christian Brauner --- diff --git a/src/lxc/network.c b/src/lxc/network.c index d4d1f8340..28d0d8756 100644 --- a/src/lxc/network.c +++ b/src/lxc/network.c @@ -2098,13 +2098,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; @@ -2239,19 +2239,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; }