[lxc-devel] [lxc/master] confile: pointer 'retv' is dereferenced.

2xsec on Github lxc-bot at linuxcontainers.org
Wed May 30 07:44:46 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 548 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180530/efa76f8c/attachment.bin>
-------------- next part --------------
From 165421ee66d5cf7c6ff6274b5afcfe9320bf4aab Mon Sep 17 00:00:00 2001
From: Donghwa Jeong <dh48.jeong at samsung.com>
Date: Wed, 30 May 2018 16:35:29 +0900
Subject: [PATCH] confile: pointer 'retv' is dereferenced.

Signed-off-by: Donghwa Jeong <dh48.jeong at 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");


More information about the lxc-devel mailing list