[tor-commits] [tor/master] hs-v3: add an option param to safe log functions

nickm at torproject.org nickm at torproject.org
Fri Feb 8 13:37:51 UTC 2019


commit 238a9080c6e80856145210a374b35e613d4cb11e
Author: Suphanat Chunhapanya <haxx.pop at gmail.com>
Date:   Tue Jan 15 12:16:23 2019 +0700

    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 c71ed0184..7bd850edd 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 a169cfd45..6b23b3934 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 e04f0cc0c..1f026a20d 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;
       }





More information about the tor-commits mailing list