From 238a9080c6e80856145210a374b35e613d4cb11e Mon Sep 17 00:00:00 2001 From: Suphanat Chunhapanya Date: Tue, 15 Jan 2019 12:16:23 +0700 Subject: [PATCH] hs-v3: add an option param to safe log functions We add an option param to safe_str and safe_str_client because in some case we need to use those functions before global_options is set. --- src/app/config/config.c | 16 ++++++++++++---- src/app/config/config.h | 10 ++++++++++ src/feature/hs/hs_client.c | 2 +- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/app/config/config.c b/src/app/config/config.c index c71ed01843..7bd850eddb 100644 --- a/src/app/config/config.c +++ b/src/app/config/config.c @@ -1086,10 +1086,14 @@ config_free_all(void) * (We return "[scrubbed]" if SafeLogging is "1", and address otherwise.) */ const char * -safe_str_client(const char *address) +safe_str_client_opts(const or_options_t *options, const char *address) { tor_assert(address); - if (get_options()->SafeLogging_ == SAFELOG_SCRUB_ALL) + if (!options) { + options = get_options(); + } + + if (options->SafeLogging_ == SAFELOG_SCRUB_ALL) return "[scrubbed]"; else return address; @@ -1103,10 +1107,14 @@ safe_str_client(const char *address) * otherwise.) */ const char * -safe_str(const char *address) +safe_str_opts(const or_options_t *options, const char *address) { tor_assert(address); - if (get_options()->SafeLogging_ != SAFELOG_SCRUB_NONE) + if (!options) { + options = get_options(); + } + + if (options->SafeLogging_ != SAFELOG_SCRUB_NONE) return "[scrubbed]"; else return address; diff --git a/src/app/config/config.h b/src/app/config/config.h index a169cfd451..6b23b3934f 100644 --- a/src/app/config/config.h +++ b/src/app/config/config.h @@ -143,6 +143,16 @@ MOCK_DECL(char *, #define get_cachedir_fname_suffix(sub1, 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 create_keys_directory(const or_options_t *options); diff --git a/src/feature/hs/hs_client.c b/src/feature/hs/hs_client.c index e04f0cc0c3..1f026a20d1 100644 --- a/src/feature/hs/hs_client.c +++ b/src/feature/hs/hs_client.c @@ -1646,7 +1646,7 @@ hs_config_client_authorization(const or_options_t *options, if (digest256map_get(auths, identity_pk.pubkey)) { log_warn(LD_REND, "Duplicate authorization for the same hidden " "service address %s.", - safe_str_client(auth->onion_address)); + safe_str_client_opts(options, auth->onion_address)); client_service_authorization_free(auth); goto end; }