From: Hans Dedecker Date: Mon, 5 Aug 2019 20:05:36 +0000 (+0200) Subject: system-linux: fix resource leak X-Git-Url: https://git.librecmc.org/?p=oweals%2Fnetifd.git;a=commitdiff_plain;h=5e02f94411b06f192fb2a7d9be9abde3549153a8 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 --- diff --git a/system-linux.c b/system-linux.c index c406a3d..acfd40e 100644 --- a/system-linux.c +++ b/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;