The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/2364
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) === Hello, If 'retv' pointer is null, snprintf can derefernce a null pointer. snprintf allows null pointer with length = 0. In case of this, calling snprintf and other codes are inefficient. Signed-off-by: Donghwa Jeong <dh48.je...@samsung.com>
From 165421ee66d5cf7c6ff6274b5afcfe9320bf4aab Mon Sep 17 00:00:00 2001 From: Donghwa Jeong <dh48.je...@samsung.com> Date: Wed, 30 May 2018 16:35:29 +0900 Subject: [PATCH] confile: pointer 'retv' is dereferenced. Signed-off-by: Donghwa Jeong <dh48.je...@samsung.com> --- src/lxc/confile.c | 276 +++++++++++++++++++++++++++--------------------------- 1 file changed, 138 insertions(+), 138 deletions(-) diff --git a/src/lxc/confile.c b/src/lxc/confile.c index 558e32e8c..014915462 100644 --- a/src/lxc/confile.c +++ b/src/lxc/confile.c @@ -2899,9 +2899,9 @@ static int get_config_personality(const char *key, char *retv, int inlen, int fulllen = 0; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); #if HAVE_SYS_PERSONALITY_H int len = 0; @@ -2979,9 +2979,9 @@ static int __get_config_cgroup_controller(const char *key, char *retv, bool get_all = false; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); if (version == CGROUP2_SUPER_MAGIC) { global_token = "lxc.cgroup2"; @@ -3040,9 +3040,9 @@ static int get_config_cgroup_dir(const char *key, char *retv, int inlen, int fulllen = 0; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); strprint(retv, inlen, "%s", lxc_conf->cgroup_meta.dir); @@ -3079,9 +3079,9 @@ static int get_config_idmaps(const char *key, char *retv, int inlen, char buf[__LXC_IDMAP_STR_BUF]; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); listlen = lxc_list_len(&c->id_map); lxc_list_for_each(it, &c->id_map) @@ -3125,9 +3125,9 @@ static int get_config_mount_auto(const char *key, char *retv, int inlen, const char *sep = ""; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); if (!(c->auto_mounts & LXC_AUTO_ALL_MASK)) return 0; @@ -3201,9 +3201,9 @@ static int get_config_mount(const char *key, char *retv, int inlen, struct lxc_list *it; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); lxc_list_for_each(it, &c->mount_list) { strprint(retv, inlen, "%s\n", (char *)it->elem); @@ -3264,9 +3264,9 @@ static int get_config_hooks(const char *key, char *retv, int inlen, return -1; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); lxc_list_for_each(it, &c->hooks[found]) { strprint(retv, inlen, "%s\n", (char *)it->elem); @@ -3287,9 +3287,9 @@ static int get_config_net(const char *key, char *retv, int inlen, struct lxc_list *it; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); lxc_list_for_each(it, &c->network) { struct lxc_netdev *n = it->elem; @@ -3307,9 +3307,9 @@ static int get_config_cap_drop(const char *key, char *retv, int inlen, struct lxc_list *it; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); lxc_list_for_each(it, &c->caps) { strprint(retv, inlen, "%s\n", (char *)it->elem); @@ -3325,9 +3325,9 @@ static int get_config_cap_keep(const char *key, char *retv, int inlen, struct lxc_list *it; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); lxc_list_for_each(it, &c->keepcaps) { strprint(retv, inlen, "%s\n", (char *)it->elem); @@ -3431,9 +3431,9 @@ static int get_config_group(const char *key, char *retv, int inlen, struct lxc_list *it; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); lxc_list_for_each(it, &c->groups) { strprint(retv, inlen, "%s\n", (char *)it->elem); @@ -3449,9 +3449,9 @@ static int get_config_environment(const char *key, char *retv, int inlen, struct lxc_list *it; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); lxc_list_for_each(it, &c->environment) { strprint(retv, inlen, "%s\n", (char *)it->elem); @@ -3514,9 +3514,9 @@ static int get_config_prlimit(const char *key, char *retv, int inlen, struct lxc_list *it; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); if (!strcmp(key, "lxc.prlimit")) get_all = true; @@ -3572,9 +3572,9 @@ static int get_config_sysctl(const char *key, char *retv, int inlen, bool get_all = false; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); if (strcmp(key, "lxc.sysctl") == 0) get_all = true; @@ -3605,9 +3605,9 @@ static int get_config_proc(const char *key, char *retv, int inlen, bool get_all = false; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); if (strcmp(key, "lxc.proc") == 0) get_all = true; @@ -3637,9 +3637,9 @@ static int get_config_namespace_clone(const char *key, char *retv, int inlen, int fulllen = 0; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); for (i = 0; i < LXC_NS_MAX; i++) { if (c->ns_clone & ns_info[i].clone_flag) @@ -3656,9 +3656,9 @@ static int get_config_namespace_keep(const char *key, char *retv, int inlen, int fulllen = 0; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); for (i = 0; i < LXC_NS_MAX; i++) { if (c->ns_keep & ns_info[i].clone_flag) @@ -3676,9 +3676,9 @@ static int get_config_namespace_share(const char *key, char *retv, int inlen, int fulllen = 0; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); namespace = key + sizeof("lxc.namespace.share.") - 1; ns_idx = lxc_namespace_2_ns_idx(namespace); @@ -4523,14 +4523,14 @@ static int get_config_net_type(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + strprint(retv, inlen, "%s", lxc_net_type_to_str(netdev->type)); return fulllen; @@ -4543,14 +4543,14 @@ static int get_config_net_flags(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + if (netdev->flags & IFF_UP) strprint(retv, inlen, "up"); @@ -4564,14 +4564,14 @@ static int get_config_net_link(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + if (netdev->link[0] != '\0') strprint(retv, inlen, "%s", netdev->link); @@ -4585,14 +4585,14 @@ static int get_config_net_name(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + if (netdev->name[0] != '\0') strprint(retv, inlen, "%s", netdev->name); @@ -4607,17 +4607,17 @@ static int get_config_net_macvlan_mode(const char *key, char *retv, int inlen, const char *mode; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; if (netdev->type != LXC_NET_MACVLAN) return 0; + if (!retv) + return -1; + + memset(retv, 0, inlen); + switch (netdev->priv.macvlan_attr.mode) { case MACVLAN_MODE_PRIVATE: mode = "private"; @@ -4648,17 +4648,17 @@ static int get_config_net_veth_pair(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; if (netdev->type != LXC_NET_VETH) return 0; + if (!retv) + return -1; + + memset(retv, 0, inlen); + strprint(retv, inlen, "%s", netdev->priv.veth_attr.pair[0] != '\0' ? netdev->priv.veth_attr.pair @@ -4674,14 +4674,14 @@ static int get_config_net_script_up(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + if (netdev->upscript) strprint(retv, inlen, "%s", netdev->upscript); @@ -4695,14 +4695,14 @@ static int get_config_net_script_down(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + if (netdev->downscript) strprint(retv, inlen, "%s", netdev->downscript); @@ -4716,14 +4716,14 @@ static int get_config_net_hwaddr(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + if (netdev->hwaddr) strprint(retv, inlen, "%s", netdev->hwaddr); @@ -4737,14 +4737,14 @@ static int get_config_net_mtu(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + if (netdev->mtu) strprint(retv, inlen, "%s", netdev->mtu); @@ -4758,17 +4758,17 @@ static int get_config_net_vlan_id(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; if (netdev->type != LXC_NET_VLAN) return 0; + if (!retv) + return -1; + + memset(retv, 0, inlen); + strprint(retv, inlen, "%d", netdev->priv.vlan_attr.vid); return fulllen; @@ -4782,14 +4782,14 @@ static int get_config_net_ipv4_gateway(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + if (netdev->ipv4_gateway_auto) { strprint(retv, inlen, "auto"); } else if (netdev->ipv4_gateway) { @@ -4810,14 +4810,14 @@ static int get_config_net_ipv4_address(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + listlen = lxc_list_len(&netdev->ipv4); lxc_list_for_each(it, &netdev->ipv4) { struct lxc_inetdev *i = it->elem; @@ -4837,14 +4837,14 @@ static int get_config_net_ipv6_gateway(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + if (netdev->ipv6_gateway_auto) { strprint(retv, inlen, "auto"); } else if (netdev->ipv6_gateway) { @@ -4865,14 +4865,14 @@ static int get_config_net_ipv6_address(const char *key, char *retv, int inlen, int fulllen = 0; struct lxc_netdev *netdev = data; - if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); - if (!netdev) return -1; + if (!retv) + return -1; + + memset(retv, 0, inlen); + listlen = lxc_list_len(&netdev->ipv6); lxc_list_for_each(it, &netdev->ipv6) { struct lxc_inet6dev *i = it->elem; @@ -4891,9 +4891,9 @@ int lxc_list_config_items(char *retv, int inlen) int fulllen = 0; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); for (i = 0; i < config_size; i++) { char *s = config[i].name; @@ -4914,9 +4914,9 @@ int lxc_list_subkeys(struct lxc_conf *conf, const char *key, char *retv, int fulllen = 0; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); if (!strcmp(key, "lxc.apparmor")) { strprint(retv, inlen, "allow_incomplete\n"); @@ -4992,9 +4992,9 @@ int lxc_list_net(struct lxc_conf *c, const char *key, char *retv, int inlen) return -1; if (!retv) - inlen = 0; - else - memset(retv, 0, inlen); + return -1; + + memset(retv, 0, inlen); strprint(retv, inlen, "type\n"); strprint(retv, inlen, "script.up\n");
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel