mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Merge branch 'ticket29040_1_changes' into maint-0.3.5
This commit is contained in:
commit
ab65347819
4
changes/bug29040
Normal file
4
changes/bug29040
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Minor bugfixes (onion services):
|
||||||
|
- Avoid crashing if ClientOnionAuthDir (incorrectly) contains
|
||||||
|
more than one private key for a hidden service. Fixes bug 29040;
|
||||||
|
bugfix on 0.3.5.1-alpha.
|
@ -1086,10 +1086,14 @@ config_free_all(void)
|
|||||||
* (We return "[scrubbed]" if SafeLogging is "1", and address otherwise.)
|
* (We return "[scrubbed]" if SafeLogging is "1", and address otherwise.)
|
||||||
*/
|
*/
|
||||||
const char *
|
const char *
|
||||||
safe_str_client(const char *address)
|
safe_str_client_opts(const or_options_t *options, const char *address)
|
||||||
{
|
{
|
||||||
tor_assert(address);
|
tor_assert(address);
|
||||||
if (get_options()->SafeLogging_ == SAFELOG_SCRUB_ALL)
|
if (!options) {
|
||||||
|
options = get_options();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options->SafeLogging_ == SAFELOG_SCRUB_ALL)
|
||||||
return "[scrubbed]";
|
return "[scrubbed]";
|
||||||
else
|
else
|
||||||
return address;
|
return address;
|
||||||
@ -1103,10 +1107,14 @@ safe_str_client(const char *address)
|
|||||||
* otherwise.)
|
* otherwise.)
|
||||||
*/
|
*/
|
||||||
const char *
|
const char *
|
||||||
safe_str(const char *address)
|
safe_str_opts(const or_options_t *options, const char *address)
|
||||||
{
|
{
|
||||||
tor_assert(address);
|
tor_assert(address);
|
||||||
if (get_options()->SafeLogging_ != SAFELOG_SCRUB_NONE)
|
if (!options) {
|
||||||
|
options = get_options();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options->SafeLogging_ != SAFELOG_SCRUB_NONE)
|
||||||
return "[scrubbed]";
|
return "[scrubbed]";
|
||||||
else
|
else
|
||||||
return address;
|
return address;
|
||||||
|
@ -143,6 +143,16 @@ MOCK_DECL(char *,
|
|||||||
#define get_cachedir_fname_suffix(sub1, suffix) \
|
#define get_cachedir_fname_suffix(sub1, suffix) \
|
||||||
options_get_cachedir_fname2_suffix(get_options(), (sub1), NULL, (suffix))
|
options_get_cachedir_fname2_suffix(get_options(), (sub1), NULL, (suffix))
|
||||||
|
|
||||||
|
#define safe_str_client(address) \
|
||||||
|
safe_str_client_opts(NULL, address)
|
||||||
|
#define safe_str(address) \
|
||||||
|
safe_str_opts(NULL, address)
|
||||||
|
|
||||||
|
const char * safe_str_client_opts(const or_options_t *options,
|
||||||
|
const char *address);
|
||||||
|
const char * safe_str_opts(const or_options_t *options,
|
||||||
|
const char *address);
|
||||||
|
|
||||||
int using_default_dir_authorities(const or_options_t *options);
|
int using_default_dir_authorities(const or_options_t *options);
|
||||||
|
|
||||||
int create_keys_directory(const or_options_t *options);
|
int create_keys_directory(const or_options_t *options);
|
||||||
|
@ -1637,17 +1637,17 @@ hs_config_client_authorization(const or_options_t *options,
|
|||||||
* as a key of global map in the future. */
|
* as a key of global map in the future. */
|
||||||
if (hs_parse_address(auth->onion_address, &identity_pk,
|
if (hs_parse_address(auth->onion_address, &identity_pk,
|
||||||
NULL, NULL) < 0) {
|
NULL, NULL) < 0) {
|
||||||
client_service_authorization_free(auth);
|
|
||||||
log_warn(LD_REND, "The onion address \"%s\" is invalid in "
|
log_warn(LD_REND, "The onion address \"%s\" is invalid in "
|
||||||
"file %s", filename, auth->onion_address);
|
"file %s", filename, auth->onion_address);
|
||||||
|
client_service_authorization_free(auth);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (digest256map_get(auths, identity_pk.pubkey)) {
|
if (digest256map_get(auths, identity_pk.pubkey)) {
|
||||||
client_service_authorization_free(auth);
|
|
||||||
log_warn(LD_REND, "Duplicate authorization for the same hidden "
|
log_warn(LD_REND, "Duplicate authorization for the same hidden "
|
||||||
"service address %s.",
|
"service address %s.",
|
||||||
safe_str_client(auth->onion_address));
|
safe_str_client_opts(options, auth->onion_address));
|
||||||
|
client_service_authorization_free(auth);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user