Commit ab653478 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Merge branch 'ticket29040_1_changes' into maint-0.3.5

parents 4b36f967 eca0f878
Loading
Loading
Loading
Loading

changes/bug29040

0 → 100644
+4 −0
Original line number Diff line number Diff line
  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.
+12 −4
Original line number Diff line number Diff line
@@ -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;
+10 −0
Original line number Diff line number Diff line
@@ -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);
+3 −3
Original line number Diff line number Diff line
@@ -1637,17 +1637,17 @@ hs_config_client_authorization(const or_options_t *options,
       * as a key of global map in the future. */
      if (hs_parse_address(auth->onion_address, &identity_pk,
                           NULL, NULL) < 0) {
        client_service_authorization_free(auth);
        log_warn(LD_REND, "The onion address \"%s\" is invalid in "
                          "file %s", filename, auth->onion_address);
        client_service_authorization_free(auth);
        continue;
      }

      if (digest256map_get(auths, identity_pk.pubkey)) {
        client_service_authorization_free(auth);
        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;
      }