Browse Source

Fix leaks in tests related to setting options->DataDirectory

We pre-populate that value in main(), and we weren't freeing it
before overriding it.
Nick Mathewson 10 years ago
parent
commit
aa0eb20223
4 changed files with 13 additions and 3 deletions
  1. 10 3
      src/test/test_config.c
  2. 1 0
      src/test/test_extorport.c
  3. 1 0
      src/test/test_microdesc.c
  4. 1 0
      src/test/test_routerkeys.c

+ 10 - 3
src/test/test_config.c

@@ -196,9 +196,9 @@ static void
 test_config_check_or_create_data_subdir(void *arg)
 {
   or_options_t *options = get_options_mutable();
-  char *datadir = options->DataDirectory = tor_strdup(get_fname("datadir-0"));
+  char *datadir;
   const char *subdir = "test_stats";
-  char *subpath = get_datadir_fname(subdir);
+  char *subpath;
   struct stat st;
   int r;
 #if !defined (_WIN32) || defined (WINCE)
@@ -206,6 +206,10 @@ test_config_check_or_create_data_subdir(void *arg)
 #endif
   (void)arg;
 
+  tor_free(options->DataDirectory);
+  datadir = options->DataDirectory = tor_strdup(get_fname("datadir-0"));
+  subpath = get_datadir_fname(subdir);
+
 #if defined (_WIN32) && !defined (WINCE)
   tt_int_op(mkdir(options->DataDirectory), ==, 0);
 #else
@@ -254,7 +258,7 @@ static void
 test_config_write_to_data_subdir(void *arg)
 {
   or_options_t* options = get_options_mutable();
-  char *datadir = options->DataDirectory = tor_strdup(get_fname("datadir-1"));
+  char *datadir;
   char *cp = NULL;
   const char* subdir = "test_stats";
   const char* fname = "test_file";
@@ -276,6 +280,9 @@ test_config_write_to_data_subdir(void *arg)
   char* filepath = get_datadir_fname2(subdir, fname);
   (void)arg;
 
+  tor_free(options->DataDirectory);
+  datadir = options->DataDirectory = tor_strdup(get_fname("datadir-1"));
+
 #if defined (_WIN32) && !defined (WINCE)
   tt_int_op(mkdir(options->DataDirectory), ==, 0);
 #else

+ 1 - 0
src/test/test_extorport.c

@@ -172,6 +172,7 @@ test_ext_or_init_auth(void *arg)
   (void)arg;
 
   /* Check default filename location */
+  tor_free(options->DataDirectory);
   options->DataDirectory = tor_strdup("foo");
   cp = get_ext_or_auth_cookie_file_name();
   tt_str_op(cp, ==, "foo"PATH_SEPARATOR"extended_orport_auth_cookie");

+ 1 - 0
src/test/test_microdesc.c

@@ -261,6 +261,7 @@ test_md_cache_broken(void *data)
 
   options = get_options_mutable();
   tt_assert(options);
+  tor_free(options->DataDirectory);
   options->DataDirectory = tor_strdup(get_fname("md_datadir_test2"));
 
 #ifdef _WIN32

+ 1 - 0
src/test/test_routerkeys.c

@@ -27,6 +27,7 @@ test_routerkeys_write_fingerprint(void *arg)
   tt_assert(key);
 
   options->ORPort_set = 1; /* So that we can get the server ID key */
+  tor_free(options->DataDirectory);
   options->DataDirectory = tor_strdup(ddir);
   options->Nickname = tor_strdup("haflinger");
   set_server_identity_key(key);