Browse Source

interface: fix memory leak on error in __interface_add()

Detected by Coverity in cid 1441495

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Hans Dedecker 5 years ago
parent
commit
85de9def88
1 changed files with 8 additions and 1 deletions
  1. 8 1
      interface.c

+ 8 - 1
interface.c

@@ -892,7 +892,7 @@ static bool __interface_add(struct interface *iface, struct blob_attr *config, b
 {
 	struct blob_attr *tb[IFACE_ATTR_MAX];
 	struct blob_attr *cur;
-	char *name = iface->dynamic ? strdup(iface->name) : NULL;
+	char *name = NULL;
 
 	blobmsg_parse(iface_attrs, IFACE_ATTR_MAX, tb,
 		      blob_data(config), blob_len(config));
@@ -908,6 +908,13 @@ static bool __interface_add(struct interface *iface, struct blob_attr *config, b
 			iface->ifname = blobmsg_data(cur);
 	}
 
+	if (iface->dynamic) {
+		name = strdup(iface->name);
+
+		if (!name)
+			return false;
+	}
+
 	iface->config = config;
 	vlist_add(&interfaces, &iface->node, iface->name);