mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Create HS directories in rend_config_services, then check before use
(We only create HS directories if we are acting on the config.) Log a BUG warning if the directories aren't present immediately before they are used, then fail.
This commit is contained in:
parent
8a767ba7fb
commit
98057d274c
@ -466,7 +466,8 @@ rend_config_services(const or_options_t *options, int validate_only)
|
|||||||
for (line = options->RendConfigLines; line; line = line->next) {
|
for (line = options->RendConfigLines; line; line = line->next) {
|
||||||
if (!strcasecmp(line->key, "HiddenServiceDir")) {
|
if (!strcasecmp(line->key, "HiddenServiceDir")) {
|
||||||
if (service) { /* register the one we just finished parsing */
|
if (service) { /* register the one we just finished parsing */
|
||||||
if (rend_service_check_private_dir(options, service, 0) < 0) {
|
if (rend_service_check_private_dir(options, service, !validate_only)
|
||||||
|
< 0) {
|
||||||
rend_service_free(service);
|
rend_service_free(service);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -681,7 +682,7 @@ rend_config_services(const or_options_t *options, int validate_only)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (service) {
|
if (service) {
|
||||||
if (rend_service_check_private_dir(options, service, 0) < 0) {
|
if (rend_service_check_private_dir(options, service, !validate_only) < 0) {
|
||||||
rend_service_free(service);
|
rend_service_free(service);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1098,8 +1099,8 @@ poison_new_single_onion_hidden_service_dir(const rend_service_t *service)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure the directory exists */
|
/* Make sure the directory was created in options_act */
|
||||||
if (rend_service_check_private_dir(get_options(), service, 1) < 0)
|
if (BUG(rend_service_check_private_dir(get_options(), service, 0) < 0))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
poison_fname = rend_service_sos_poison_path(service);
|
poison_fname = rend_service_sos_poison_path(service);
|
||||||
@ -1297,7 +1298,8 @@ rend_service_load_keys(rend_service_t *s)
|
|||||||
char *fname = NULL;
|
char *fname = NULL;
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
||||||
if (rend_service_check_private_dir(get_options(), s, 1) < 0)
|
/* Make sure the directory was created in options_act */
|
||||||
|
if (BUG(rend_service_check_private_dir(get_options(), s, 0) < 0))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
/* Load key */
|
/* Load key */
|
||||||
|
Loading…
Reference in New Issue
Block a user