Browse Source

system-linux: fix resource leak

Fix cb leak in case invalid type is specified in system_if_clear_entries
Detected by Coverity in CID1431183

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Hans Dedecker 4 years ago
parent
commit
5e02f94411
1 changed files with 5 additions and 4 deletions
  1. 5 4
      system-linux.c

+ 5 - 4
system-linux.c

@@ -985,7 +985,7 @@ static void
 system_if_clear_entries(struct device *dev, int type, int af)
 {
 	struct clear_data clr;
-	struct nl_cb *cb = nl_cb_alloc(NL_CB_DEFAULT);
+	struct nl_cb *cb;
 	struct rtmsg rtm = {
 		.rtm_family = af,
 		.rtm_flags = RTM_F_CLONED,
@@ -993,9 +993,6 @@ system_if_clear_entries(struct device *dev, int type, int af)
 	int flags = NLM_F_DUMP;
 	int pending = 1;
 
-	if (!cb)
-		return;
-
 	clr.af = af;
 	clr.dev = dev;
 	clr.type = type;
@@ -1011,6 +1008,10 @@ system_if_clear_entries(struct device *dev, int type, int af)
 		return;
 	}
 
+	cb = nl_cb_alloc(NL_CB_DEFAULT);
+	if (!cb)
+		return;
+
 	clr.msg = nlmsg_alloc_simple(type, flags);
 	if (!clr.msg)
 		goto out;