mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
test: Unit tests HS DoS torrc options
Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
parent
461d231289
commit
cbe5f9571f
1 changed files with 109 additions and 0 deletions
|
@ -489,6 +489,111 @@ test_staging_service_v3(void *arg)
|
|||
hs_free_all();
|
||||
}
|
||||
|
||||
static void
|
||||
test_dos_parameters(void *arg)
|
||||
{
|
||||
int ret;
|
||||
|
||||
(void) arg;
|
||||
|
||||
hs_init();
|
||||
|
||||
/* Valid configuration. */
|
||||
{
|
||||
const char *conf =
|
||||
"HiddenServiceDir /tmp/tor-test-hs-RANDOM/hs3\n"
|
||||
"HiddenServiceVersion 3\n"
|
||||
"HiddenServicePort 22 1.1.1.1:22\n"
|
||||
"HiddenServiceEnableIntroDoSDefense 1\n"
|
||||
"HiddenServiceEnableIntroDoSRatePerSec 42\n"
|
||||
"HiddenServiceEnableIntroDoSBurstPerSec 87\n";
|
||||
|
||||
setup_full_capture_of_logs(LOG_INFO);
|
||||
ret = helper_config_service(conf, 0);
|
||||
tt_int_op(ret, OP_EQ, 0);
|
||||
expect_log_msg_containing("Service INTRO2 DoS defenses rate set to: 42");
|
||||
expect_log_msg_containing("Service INTRO2 DoS defenses burst set to: 87");
|
||||
teardown_capture_of_logs();
|
||||
}
|
||||
|
||||
/* Invalid rate. Value of 2^37. Max allowed is 2^31. */
|
||||
{
|
||||
const char *conf =
|
||||
"HiddenServiceDir /tmp/tor-test-hs-RANDOM/hs3\n"
|
||||
"HiddenServiceVersion 3\n"
|
||||
"HiddenServicePort 22 1.1.1.1:22\n"
|
||||
"HiddenServiceEnableIntroDoSDefense 1\n"
|
||||
"HiddenServiceEnableIntroDoSRatePerSec 137438953472\n"
|
||||
"HiddenServiceEnableIntroDoSBurstPerSec 87\n";
|
||||
|
||||
setup_full_capture_of_logs(LOG_WARN);
|
||||
ret = helper_config_service(conf, 0);
|
||||
tt_int_op(ret, OP_EQ, -1);
|
||||
expect_log_msg_containing("HiddenServiceEnableIntroDoSRatePerSec must "
|
||||
"be between 0 and 2147483647, "
|
||||
"not 137438953472");
|
||||
teardown_capture_of_logs();
|
||||
}
|
||||
|
||||
/* Invalid burst. Value of 2^38. Max allowed is 2^31. */
|
||||
{
|
||||
const char *conf =
|
||||
"HiddenServiceDir /tmp/tor-test-hs-RANDOM/hs3\n"
|
||||
"HiddenServiceVersion 3\n"
|
||||
"HiddenServicePort 22 1.1.1.1:22\n"
|
||||
"HiddenServiceEnableIntroDoSDefense 1\n"
|
||||
"HiddenServiceEnableIntroDoSRatePerSec 42\n"
|
||||
"HiddenServiceEnableIntroDoSBurstPerSec 274877906944\n";
|
||||
|
||||
setup_full_capture_of_logs(LOG_WARN);
|
||||
ret = helper_config_service(conf, 0);
|
||||
tt_int_op(ret, OP_EQ, -1);
|
||||
expect_log_msg_containing("HiddenServiceEnableIntroDoSBurstPerSec must "
|
||||
"be between 0 and 2147483647, "
|
||||
"not 274877906944");
|
||||
teardown_capture_of_logs();
|
||||
}
|
||||
|
||||
/* Burst is smaller than rate. */
|
||||
{
|
||||
const char *conf =
|
||||
"HiddenServiceDir /tmp/tor-test-hs-RANDOM/hs3\n"
|
||||
"HiddenServiceVersion 3\n"
|
||||
"HiddenServicePort 22 1.1.1.1:22\n"
|
||||
"HiddenServiceEnableIntroDoSDefense 1\n"
|
||||
"HiddenServiceEnableIntroDoSRatePerSec 42\n"
|
||||
"HiddenServiceEnableIntroDoSBurstPerSec 27\n";
|
||||
|
||||
setup_full_capture_of_logs(LOG_WARN);
|
||||
ret = helper_config_service(conf, 0);
|
||||
tt_int_op(ret, OP_EQ, -1);
|
||||
expect_log_msg_containing("Hidden service DoS defenses burst (27) can "
|
||||
"not be smaller than the rate value (42).");
|
||||
teardown_capture_of_logs();
|
||||
}
|
||||
|
||||
/* Negative value. */
|
||||
{
|
||||
const char *conf =
|
||||
"HiddenServiceDir /tmp/tor-test-hs-RANDOM/hs3\n"
|
||||
"HiddenServiceVersion 3\n"
|
||||
"HiddenServicePort 22 1.1.1.1:22\n"
|
||||
"HiddenServiceEnableIntroDoSDefense 1\n"
|
||||
"HiddenServiceEnableIntroDoSRatePerSec -1\n"
|
||||
"HiddenServiceEnableIntroDoSBurstPerSec 42\n";
|
||||
|
||||
setup_full_capture_of_logs(LOG_WARN);
|
||||
ret = helper_config_service(conf, 0);
|
||||
tt_int_op(ret, OP_EQ, -1);
|
||||
expect_log_msg_containing("HiddenServiceEnableIntroDoSRatePerSec must be "
|
||||
"between 0 and 2147483647, not -1");
|
||||
teardown_capture_of_logs();
|
||||
}
|
||||
|
||||
done:
|
||||
hs_free_all();
|
||||
}
|
||||
|
||||
struct testcase_t hs_config_tests[] = {
|
||||
/* Invalid service not specific to any version. */
|
||||
{ "invalid_service", test_invalid_service, TT_FORK,
|
||||
|
@ -512,6 +617,10 @@ struct testcase_t hs_config_tests[] = {
|
|||
{ "staging_service_v3", test_staging_service_v3, TT_FORK,
|
||||
NULL, NULL },
|
||||
|
||||
/* Test HS DoS parameters. */
|
||||
{ "dos_parameters", test_dos_parameters, TT_FORK,
|
||||
NULL, NULL },
|
||||
|
||||
END_OF_TESTCASES
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue