summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuphanat Chunhapanya <haxx.pop@gmail.com>2019-01-15 12:16:23 +0700
committerSuphanat Chunhapanya <haxx.pop@gmail.com>2019-01-24 04:31:18 +0700
commit238a9080c6e80856145210a374b35e613d4cb11e (patch)
tree315e8008b755f02ba4150bd217db8caaa0b56264
parent8de735f0681970ff688cb5e775dae812ed27aa62 (diff)
downloadtor-238a9080c6e80856145210a374b35e613d4cb11e.tar.gz
tor-238a9080c6e80856145210a374b35e613d4cb11e.zip
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.
-rw-r--r--src/app/config/config.c16
-rw-r--r--src/app/config/config.h10
-rw-r--r--src/feature/hs/hs_client.c2
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;
}