]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix a memory leak in error path of my default-torrc code
authorNick Mathewson <nickm@torproject.org>
Wed, 30 Nov 2011 17:16:39 +0000 (12:16 -0500)
committerNick Mathewson <nickm@torproject.org>
Wed, 30 Nov 2011 17:16:39 +0000 (12:16 -0500)
Fixes Coverity CID # 500

src/or/config.c

index fb5b49a53d9ff6fd1003a63c7ee267354fbb6d24..391d2905f6fe5fc6468552f9166f84edc418dfb4 100644 (file)
@@ -4399,7 +4399,8 @@ int
 options_init_from_torrc(int argc, char **argv)
 {
   char *cf=NULL, *cf_defaults=NULL;
-  int i, retval, command;
+  int i, command;
+  int retval = -1;
   static char **backup_argv;
   static int backup_argc;
   char *command_arg = NULL;
@@ -4466,19 +4467,16 @@ options_init_from_torrc(int argc, char **argv)
 
   retval = options_init_from_string(cf_defaults, cf, command, command_arg,
                                     &errmsg);
-  tor_free(cf);
-  tor_free(cf_defaults);
-  if (retval < 0)
-    goto err;
-
-  return 0;
 
  err:
+
+  tor_free(cf);
+  tor_free(cf_defaults);
   if (errmsg) {
     log(LOG_WARN,LD_CONFIG,"%s", errmsg);
     tor_free(errmsg);
   }
-  return -1;
+  return retval < 0 ? -1 : 0;
 }
 
 /** Load the options from the configuration in <b>cf</b>, validate