aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorPeter Palfrader <peter@palfrader.org>2013-04-04 18:05:14 +0200
committerNick Mathewson <nickm@torproject.org>2013-04-05 16:51:48 -0400
commitd1dc23c9386c6c85ec50c5b4d0a9077ffcb78683 (patch)
treee24b40ea6238870f0b6d9d3bd858a71209dfdc1a /src/test
parent33b7083f26e30304f6c9296e3cb7205f6bda0c95 (diff)
downloadtor-d1dc23c9386c6c85ec50c5b4d0a9077ffcb78683.tar
tor-d1dc23c9386c6c85ec50c5b4d0a9077ffcb78683.tar.gz
test.c: Try to create a more random temporary directory for our workspace (re: Bug#8638)
Diffstat (limited to 'src/test')
-rw-r--r--src/test/test.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/test/test.c b/src/test/test.c
index d3d3bd50b..0b55f7bb7 100644
--- a/src/test/test.c
+++ b/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);