Merge branch 'maint-0.2.9' into release-0.2.9
This commit is contained in:
commit
b4c648c6c0
|
@ -0,0 +1,4 @@
|
||||||
|
o Minor bugfixes (unit tests, hidden services):
|
||||||
|
- Remove a double-free in the single onion service unit test. Stop
|
||||||
|
ignoring a return value. Make future changes less error-prone.
|
||||||
|
Fixes bug 20864; bugfix on 0.2.9.6-rc.
|
|
@ -541,6 +541,7 @@ test_single_onion_poisoning(void *arg)
|
||||||
rend_service_t *service_2 = tor_malloc_zero(sizeof(rend_service_t));
|
rend_service_t *service_2 = tor_malloc_zero(sizeof(rend_service_t));
|
||||||
char *dir2 = tor_strdup(get_fname_rnd("test_hs_dir2"));
|
char *dir2 = tor_strdup(get_fname_rnd("test_hs_dir2"));
|
||||||
smartlist_t *services = smartlist_new();
|
smartlist_t *services = smartlist_new();
|
||||||
|
char *poison_path = NULL;
|
||||||
|
|
||||||
/* No services, no service to verify, no problem! */
|
/* No services, no service to verify, no problem! */
|
||||||
mock_options->HiddenServiceSingleHopMode = 0;
|
mock_options->HiddenServiceSingleHopMode = 0;
|
||||||
|
@ -569,8 +570,8 @@ test_single_onion_poisoning(void *arg)
|
||||||
tt_assert(ret == 0);
|
tt_assert(ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
service_1->directory = dir1;
|
service_1->directory = tor_strdup(dir1);
|
||||||
service_2->directory = dir2;
|
service_2->directory = tor_strdup(dir2);
|
||||||
/* The services own the directory pointers now */
|
/* The services own the directory pointers now */
|
||||||
dir1 = dir2 = NULL;
|
dir1 = dir2 = NULL;
|
||||||
/* Add port to service 1 */
|
/* Add port to service 1 */
|
||||||
|
@ -687,6 +688,7 @@ test_single_onion_poisoning(void *arg)
|
||||||
|
|
||||||
/* Now add the second service: it has no key and no poison file */
|
/* Now add the second service: it has no key and no poison file */
|
||||||
ret = rend_service_check_dir_and_add(services, mock_options, service_2, 0);
|
ret = rend_service_check_dir_and_add(services, mock_options, service_2, 0);
|
||||||
|
tt_assert(ret == 0);
|
||||||
|
|
||||||
/* A new service, and an existing poisoned service. Not ok. */
|
/* A new service, and an existing poisoned service. Not ok. */
|
||||||
mock_options->HiddenServiceSingleHopMode = 0;
|
mock_options->HiddenServiceSingleHopMode = 0;
|
||||||
|
@ -706,9 +708,9 @@ test_single_onion_poisoning(void *arg)
|
||||||
|
|
||||||
/* Now remove the poisoning from the first service, and we have the opposite
|
/* Now remove the poisoning from the first service, and we have the opposite
|
||||||
* problem. */
|
* problem. */
|
||||||
char *poison_path = rend_service_sos_poison_path(service_1);
|
poison_path = rend_service_sos_poison_path(service_1);
|
||||||
|
tt_assert(poison_path);
|
||||||
ret = unlink(poison_path);
|
ret = unlink(poison_path);
|
||||||
tor_free(poison_path);
|
|
||||||
tt_assert(ret == 0);
|
tt_assert(ret == 0);
|
||||||
|
|
||||||
/* Unpoisoned service directories with previous keys are ok, as are empty
|
/* Unpoisoned service directories with previous keys are ok, as are empty
|
||||||
|
@ -765,9 +767,10 @@ test_single_onion_poisoning(void *arg)
|
||||||
tt_assert(ret == 0);
|
tt_assert(ret == 0);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
/* The test harness deletes the directories at exit */
|
||||||
|
tor_free(poison_path);
|
||||||
tor_free(dir1);
|
tor_free(dir1);
|
||||||
tor_free(dir2);
|
tor_free(dir2);
|
||||||
/* The test harness deletes the directories at exit */
|
|
||||||
smartlist_free(services);
|
smartlist_free(services);
|
||||||
rend_service_free(service_1);
|
rend_service_free(service_1);
|
||||||
rend_service_free(service_2);
|
rend_service_free(service_2);
|
||||||
|
|
Loading…
Reference in New Issue