From 38365ff0405a1f5787b635ce197b066083ad9e69 Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Tue, 5 Feb 2013 14:35:54 +0000 Subject: [PATCH] Theoretical memory leak fix. --- src/network.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/network.c b/src/network.c index 4726636..6b7e27a 100644 --- a/src/network.c +++ b/src/network.c @@ -258,14 +258,17 @@ static int iface_allowed(struct irec **irecp, int if_index, if (lo->name && strcmp(lo->name, ifr.ifr_name) == 0) break; - if (!lo && - (lo = whine_malloc(sizeof(struct iname))) && - (lo->name = whine_malloc(strlen(ifr.ifr_name)+1))) + if (!lo && (lo = whine_malloc(sizeof(struct iname)))) { - strcpy(lo->name, ifr.ifr_name); - lo->used = 1; - lo->next = daemon->if_names; - daemon->if_names = lo; + if ((lo->name = whine_malloc(strlen(ifr.ifr_name)+1))) + { + strcpy(lo->name, ifr.ifr_name); + lo->used = 1; + lo->next = daemon->if_names; + daemon->if_names = lo; + } + else + free(lo); } }