From: Christian Brauner Date: Wed, 1 Nov 2017 20:52:07 +0000 (+0100) Subject: network: reap child in all cases X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=332d95177db4a88933a6ef327be35a9b5f380ccc;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 da6259447..49114727d 100644 --- a/src/lxc/network.c +++ b/src/lxc/network.c @@ -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; }