aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2018-09-20 10:59:23 -0400
committerDavid Goulet <dgoulet@torproject.org>2018-09-20 10:59:23 -0400
commitd1a6043bfb0a3869439565d563a93aeb0fa30923 (patch)
treef0eba3a75ce739021718b6ee4e5da6454be3e7b3
parent9c83cd1993b6ed98301020e5a170df9d5427a1e6 (diff)
parent0971b3ce4d03929ef09838209ab87de4f9dfcf1f (diff)
downloadtor-d1a6043bfb0a3869439565d563a93aeb0fa30923.tar.gz
tor-d1a6043bfb0a3869439565d563a93aeb0fa30923.zip
Merge branch 'maint-0.3.2' of https://git.torproject.org/tor into maint-0.3.2
-rw-r--r--changes/bug273354
-rw-r--r--changes/bug276586
-rw-r--r--src/ext/tinytest.c12
-rw-r--r--src/or/hs_service.c6
4 files changed, 23 insertions, 5 deletions
diff --git a/changes/bug27335 b/changes/bug27335
new file mode 100644
index 0000000000..dcc55a945a
--- /dev/null
+++ b/changes/bug27335
@@ -0,0 +1,4 @@
+ o Minor bugfixes (hidden service v3):
+ - In case the hidden service directory can't be created or has wrong
+ permissions, do not BUG() on it which lead to a non fatal stacktrace.
+ Fixes bug 27335; bugfix on 0.3.2.1.
diff --git a/changes/bug27658 b/changes/bug27658
new file mode 100644
index 0000000000..8cc0aa4714
--- /dev/null
+++ b/changes/bug27658
@@ -0,0 +1,6 @@
+ o Minor bugfixes (testing):
+ - If a unit test running in a subprocess exits abnormally or with a
+ nonzero status code, treat the test as having failed, even if
+ the test reported success. Without this fix, memory leaks don't cause
+ cause the tests to fail, even with LeakSanitizer. Fixes bug 27658;
+ bugfix on 0.2.2.4-alpha.
diff --git a/src/ext/tinytest.c b/src/ext/tinytest.c
index 3fb1b39c71..a51cd6011a 100644
--- a/src/ext/tinytest.c
+++ b/src/ext/tinytest.c
@@ -207,12 +207,20 @@ testcase_run_forked_(const struct testgroup_t *group,
r = (int)read(outcome_pipe[0], b, 1);
if (r == 0) {
printf("[Lost connection!] ");
- return 0;
+ return FAIL;
} else if (r != 1) {
perror("read outcome from pipe");
}
- waitpid(pid, &status, 0);
+ r = waitpid(pid, &status, 0);
close(outcome_pipe[0]);
+ if (r == -1) {
+ perror("waitpid");
+ return FAIL;
+ }
+ if (! WIFEXITED(status) || WEXITSTATUS(status) != 0) {
+ printf("[did not exit cleanly.]");
+ return FAIL;
+ }
return b[0]=='Y' ? OK : (b[0]=='S' ? SKIP : FAIL);
}
#endif
diff --git a/src/or/hs_service.c b/src/or/hs_service.c
index 33088480d1..408625c3ac 100644
--- a/src/or/hs_service.c
+++ b/src/or/hs_service.c
@@ -974,9 +974,9 @@ load_service_keys(hs_service_t *service)
* files to that directory so make sure it exists and has the right
* permissions. We do this here because at this stage we know that Tor is
* actually running and the service we have has been validated. */
- if (BUG(hs_check_service_private_dir(get_options()->User,
- config->directory_path,
- config->dir_group_readable, 1) < 0)) {
+ if (hs_check_service_private_dir(get_options()->User,
+ config->directory_path,
+ config->dir_group_readable, 1) < 0) {
goto end;
}