[Dnsmasq-discuss] [PATCH] free used pointers during loading

Chen Wei weichen302 at icloud.com
Sun Feb 15 11:26:01 GMT 2015


Valgrind reports three leaks. Those unfreed pointers are only used during
loading.

---
 src/dnsmasq.c |    2 ++
 src/option.c  |   11 +++++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/dnsmasq.c b/src/dnsmasq.c
index e903a24..e6dabbf 100644
--- a/src/dnsmasq.c
+++ b/src/dnsmasq.c
@@ -627,6 +627,8 @@ int main (int argc, char **argv)
     }
   
 #ifdef HAVE_LINUX_NETWORK
+  free(hdr);
+  free(data);
   if (option_bool(OPT_DEBUG)) 
     prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
 #endif
diff --git a/src/option.c b/src/option.c
index e4b4865..ae0ad00 100644
--- a/src/option.c
+++ b/src/option.c
@@ -4361,7 +4361,7 @@ void read_opts(int argc, char **argv, char *compile_opts)
 {
   char *buff = opt_malloc(MAXDNAME);
   int option, conffile_opt = '7', testmode = 0;
-  char *arg, *conffile = CONFFILE;
+  char *arg, *conffile = NULL;
       
   opterr = 0;
 
@@ -4476,7 +4476,14 @@ void read_opts(int argc, char **argv, char *compile_opts)
     }
 
   if (conffile)
-    one_file(conffile, conffile_opt);
+    {
+      one_file(conffile, conffile_opt);
+      free(conffile);
+    }
+  else
+    {
+      one_file(CONFFILE, conffile_opt);
+    }
 
   /* port might not be known when the address is parsed - fill in here */
   if (daemon->servers)
-- 
1.7.10.4




More information about the Dnsmasq-discuss mailing list