The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/3408
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
From 598b35b421a898f7b8c0b94fad32ff74595c53f3 Mon Sep 17 00:00:00 2001 From: Christian Brauner <christian.brau...@ubuntu.com> Date: Mon, 11 May 2020 09:16:33 +0200 Subject: [PATCH 1/2] tools/lxc-ls: shut up lgtm more Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> --- src/lxc/tools/lxc_ls.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/lxc/tools/lxc_ls.c b/src/lxc/tools/lxc_ls.c index 05d4bcecc8..0abcd7a633 100644 --- a/src/lxc/tools/lxc_ls.c +++ b/src/lxc/tools/lxc_ls.c @@ -1180,6 +1180,11 @@ static int ls_recv_str(int fd, char **buf) return -1; } + if (slen == SIZE_MAX) { + free(*buf); + return -1; + } + (*buf)[slen] = '\0'; } From 756cadb6ab07a6043960bf0db6c39742fb10f118 Mon Sep 17 00:00:00 2001 From: Christian Brauner <christian.brau...@ubuntu.com> Date: Mon, 11 May 2020 22:16:59 +0200 Subject: [PATCH 2/2] confile: fix order independence of network keys We need to make sure we don't overwrite values when they have already been set. Closes: #3405. Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> --- src/lxc/confile.c | 12 ++++++++---- src/lxc/confile_utils.c | 12 ++++++++++++ src/lxc/confile_utils.h | 1 + 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/lxc/confile.c b/src/lxc/confile.c index 3d7d9be50a..13ebdd059a 100644 --- a/src/lxc/confile.c +++ b/src/lxc/confile.c @@ -306,14 +306,18 @@ static int set_config_net_type(const char *key, const char *value, netdev->type = LXC_NET_VETH; lxc_list_init(&netdev->priv.veth_attr.ipv4_routes); lxc_list_init(&netdev->priv.veth_attr.ipv6_routes); - lxc_veth_mode_to_flag(&netdev->priv.veth_attr.mode, "bridge"); + if (!lxc_veth_flag_to_mode(netdev->priv.veth_attr.mode)) + lxc_veth_mode_to_flag(&netdev->priv.veth_attr.mode, "bridge"); } else if (strcmp(value, "macvlan") == 0) { netdev->type = LXC_NET_MACVLAN; - lxc_macvlan_mode_to_flag(&netdev->priv.macvlan_attr.mode, "private"); + if (!lxc_macvlan_flag_to_mode(netdev->priv.veth_attr.mode)) + lxc_macvlan_mode_to_flag(&netdev->priv.macvlan_attr.mode, "private"); } else if (strcmp(value, "ipvlan") == 0) { netdev->type = LXC_NET_IPVLAN; - lxc_ipvlan_mode_to_flag(&netdev->priv.ipvlan_attr.mode, "l3"); - lxc_ipvlan_isolation_to_flag(&netdev->priv.ipvlan_attr.isolation, "bridge"); + if (!lxc_ipvlan_flag_to_mode(netdev->priv.ipvlan_attr.mode)) + lxc_ipvlan_mode_to_flag(&netdev->priv.ipvlan_attr.mode, "l3"); + if (!lxc_ipvlan_flag_to_isolation(netdev->priv.ipvlan_attr.isolation)) + lxc_ipvlan_isolation_to_flag(&netdev->priv.ipvlan_attr.isolation, "bridge"); } else if (strcmp(value, "vlan") == 0) { netdev->type = LXC_NET_VLAN; } else if (strcmp(value, "phys") == 0) { diff --git a/src/lxc/confile_utils.c b/src/lxc/confile_utils.c index ff4ae76884..05dadf9ec6 100644 --- a/src/lxc/confile_utils.c +++ b/src/lxc/confile_utils.c @@ -506,6 +506,18 @@ int lxc_veth_mode_to_flag(int *mode, const char *value) return ret_set_errno(-1, EINVAL); } +char *lxc_veth_flag_to_mode(int mode) +{ + for (size_t i = 0; i < sizeof(veth_mode) / sizeof(veth_mode[0]); i++) { + if (veth_mode[i].mode != mode) + continue; + + return veth_mode[i].name; + } + + return NULL; +} + static struct lxc_macvlan_mode { char *name; int mode; diff --git a/src/lxc/confile_utils.h b/src/lxc/confile_utils.h index 1568ccec5d..7c59deae5a 100644 --- a/src/lxc/confile_utils.h +++ b/src/lxc/confile_utils.h @@ -41,6 +41,7 @@ extern void lxc_log_configured_netdevs(const struct lxc_conf *conf); extern bool lxc_remove_nic_by_idx(struct lxc_conf *conf, unsigned int idx); extern void lxc_free_networks(struct lxc_list *networks); extern int lxc_veth_mode_to_flag(int *mode, const char *value); +extern char *lxc_veth_flag_to_mode(int mode); extern int lxc_macvlan_mode_to_flag(int *mode, const char *value); extern char *lxc_macvlan_flag_to_mode(int mode); extern int lxc_ipvlan_mode_to_flag(int *mode, const char *value);
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel