mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-14 17:12:14 +00:00
close correct side of the pipe and increase buffer size by one to handle \n
Signed-off-by: S.Çağlar Onur <caglar@10ur.org> Acked-by: Stéphane Graber <stgraber@ubuntu.com>
This commit is contained in:
parent
44bbab8cdf
commit
fe1f672ff8
@ -3011,13 +3011,14 @@ void lxc_delete_network(struct lxc_handler *handler)
|
|||||||
|
|
||||||
#define LXC_USERNIC_PATH LIBEXECDIR "/lxc/lxc-user-nic"
|
#define LXC_USERNIC_PATH LIBEXECDIR "/lxc/lxc-user-nic"
|
||||||
|
|
||||||
|
/* lxc-user-nic returns "interface_name:interface_name\n" */
|
||||||
|
#define MAX_BUFFER_SIZE IFNAMSIZ*2 + 2
|
||||||
static int unpriv_assign_nic(struct lxc_netdev *netdev, pid_t pid)
|
static int unpriv_assign_nic(struct lxc_netdev *netdev, pid_t pid)
|
||||||
{
|
{
|
||||||
pid_t child;
|
pid_t child;
|
||||||
int bytes, pipefd[2];
|
int bytes, pipefd[2];
|
||||||
char *token, *saveptr = NULL;
|
char *token, *saveptr = NULL;
|
||||||
/* lxc-user-nic returns "interface_name:interface_name" format */
|
char buffer[MAX_BUFFER_SIZE];
|
||||||
char buffer[IFNAMSIZ*2 + 1];
|
|
||||||
|
|
||||||
if (netdev->type != LXC_NET_VETH) {
|
if (netdev->type != LXC_NET_VETH) {
|
||||||
ERROR("nic type %d not support for unprivileged use",
|
ERROR("nic type %d not support for unprivileged use",
|
||||||
@ -3043,7 +3044,7 @@ static int unpriv_assign_nic(struct lxc_netdev *netdev, pid_t pid)
|
|||||||
/* redirect the stdout to write-end of the pipe */
|
/* redirect the stdout to write-end of the pipe */
|
||||||
dup2(pipefd[1], STDOUT_FILENO);
|
dup2(pipefd[1], STDOUT_FILENO);
|
||||||
/* close the write-end of the pipe */
|
/* close the write-end of the pipe */
|
||||||
close(pipefd[0]);
|
close(pipefd[1]);
|
||||||
|
|
||||||
// Call lxc-user-nic pid type bridge
|
// Call lxc-user-nic pid type bridge
|
||||||
char pidstr[20];
|
char pidstr[20];
|
||||||
@ -3058,7 +3059,7 @@ static int unpriv_assign_nic(struct lxc_netdev *netdev, pid_t pid)
|
|||||||
/* close the write-end of the pipe */
|
/* close the write-end of the pipe */
|
||||||
close(pipefd[1]);
|
close(pipefd[1]);
|
||||||
|
|
||||||
bytes = read(pipefd[0], &buffer, IFNAMSIZ*2 + 1);
|
bytes = read(pipefd[0], &buffer, MAX_BUFFER_SIZE);
|
||||||
if (bytes < 0) {
|
if (bytes < 0) {
|
||||||
SYSERROR("read failed");
|
SYSERROR("read failed");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user