Bladeren bron

test.c: Try to create a more random temporary directory for our workspace (re: Bug#8638)

Peter Palfrader 11 jaren geleden
bovenliggende
commit
d1dc23c938
2 gewijzigde bestanden met toevoegingen van 12 en 4 verwijderingen
  1. 3 0
      changes/bug8638
  2. 9 4
      src/test/test.c

+ 3 - 0
changes/bug8638

@@ -0,0 +1,3 @@
+ o Minor features
+   In our testsuite, create temporary directories with a bit more entropy
+   in their name to make name collissions less likely.  Fixes bug 8638.

+ 9 - 4
src/test/test.c

@@ -88,8 +88,14 @@ setup_directory(void)
 {
   static int is_setup = 0;
   int r;
+  char rnd[256], rnd32[256];
   if (is_setup) return;
 
+/* Due to base32 limitation needs to be a multiple of 5. */
+#define RAND_PATH_BYTES 5
+  crypto_rand(rnd, RAND_PATH_BYTES);
+  base32_encode(rnd32, sizeof(rnd32), rnd, RAND_PATH_BYTES);
+
 #ifdef _WIN32
   {
     char buf[MAX_PATH];
@@ -98,11 +104,11 @@ setup_directory(void)
     if (!GetTempPathA(sizeof(buf),buf))
       tmp = "c:\\windows\\temp";
     tor_snprintf(temp_dir, sizeof(temp_dir),
-                 "%s\\tor_test_%d", tmp, (int)getpid());
+                 "%s\\tor_test_%d_%s", tmp, (int)getpid(), rnd32);
     r = mkdir(temp_dir);
   }
 #else
-  tor_snprintf(temp_dir, sizeof(temp_dir), "/tmp/tor_test_%d", (int) getpid());
+  tor_snprintf(temp_dir, sizeof(temp_dir), "/tmp/tor_test_%d_%s", (int) getpid(), rnd32);
   r = mkdir(temp_dir, 0700);
 #endif
   if (r) {
@@ -2094,6 +2100,7 @@ main(int c, const char **v)
     return 1;
   }
   crypto_set_tls_dh_prime(NULL);
+  crypto_seed_rng(1);
   rep_hist_init();
   network_init();
   setup_directory();
@@ -2106,8 +2113,6 @@ main(int c, const char **v)
     return 1;
   }
 
-  crypto_seed_rng(1);
-
   atexit(remove_directory);
 
   have_failed = (tinytest_main(c, v, testgroups) != 0);