Unverified Commit db329522 authored by teor's avatar teor
Browse files

log: When initialising log domain masks, only set known log domains

And add a runtime test that checks for unknown domains and flags.

Fixes bug 31854; bugfix on 0.2.1.1-alpha.
parent 25c5322d
Loading
Loading
Loading
Loading

changes/bug31854

0 → 100644
+3 −0
Original line number Diff line number Diff line
  o Minor bugfixes (logging):
    - When initialising log domain masks, only set known log domains.
      Fixes bug 31854; bugfix on 0.2.1.1-alpha.
+8 −4
Original line number Diff line number Diff line
@@ -628,6 +628,10 @@ void
tor_log(int severity, log_domain_mask_t domain, const char *format, ...)
{
  va_list ap;

  /* check that domain is composed of known domains and flags */
  raw_assert((domain & (LD_ALL_DOMAINS|LD_ALL_FLAGS)) == domain);

  if (severity > log_global_min_severity_)
    return;
  va_start(ap,format);
@@ -927,7 +931,7 @@ set_log_severity_config(int loglevelMin, int loglevelMax,
  raw_assert(loglevelMax >= LOG_ERR && loglevelMax <= LOG_DEBUG);
  memset(severity_out, 0, sizeof(log_severity_list_t));
  for (i = loglevelMin; i >= loglevelMax; --i) {
    severity_out->masks[SEVERITY_MASK_IDX(i)] = ~0u;
    severity_out->masks[SEVERITY_MASK_IDX(i)] = LD_ALL_DOMAINS;
  }
}

@@ -1421,7 +1425,7 @@ parse_log_severity_config(const char **cfg_ptr,
    const char *dash, *space;
    char *sev_lo, *sev_hi;
    int low, high, i;
    log_domain_mask_t domains = ~0u;
    log_domain_mask_t domains = LD_ALL_DOMAINS;

    if (*cfg == '[') {
      int err = 0;
@@ -1439,7 +1443,7 @@ parse_log_severity_config(const char **cfg_ptr,
      tor_free(domains_str);
      SMARTLIST_FOREACH_BEGIN(domains_list, const char *, domain) {
            if (!strcmp(domain, "*")) {
              domains = ~0u;
              domains = LD_ALL_DOMAINS;
            } else {
              log_domain_mask_t d;
              int negate=0;
@@ -1535,7 +1539,7 @@ switch_logs_debug(void)
  LOCK_LOGS();
  for (lf = logfiles; lf; lf=lf->next) {
    for (i = LOG_DEBUG; i >= LOG_ERR; --i)
      lf->severities->masks[SEVERITY_MASK_IDX(i)] = ~0u;
      lf->severities->masks[SEVERITY_MASK_IDX(i)] = LD_ALL_DOMAINS;
  }
  log_global_min_severity_ = get_min_log_level();
  UNLOCK_LOGS();
+3 −3
Original line number Diff line number Diff line
@@ -54,9 +54,9 @@ setup_log_callback(void)
{
  log_severity_list_t lst;
  memset(&lst, 0, sizeof(lst));
  lst.masks[SEVERITY_MASK_IDX(LOG_ERR)] = ~0;
  lst.masks[SEVERITY_MASK_IDX(LOG_WARN)] = ~0;
  lst.masks[SEVERITY_MASK_IDX(LOG_NOTICE)] = ~0;
  lst.masks[SEVERITY_MASK_IDX(LOG_ERR)] = LD_ALL_DOMAINS;
  lst.masks[SEVERITY_MASK_IDX(LOG_WARN)] = LD_ALL_DOMAINS;
  lst.masks[SEVERITY_MASK_IDX(LOG_NOTICE)] = LD_ALL_DOMAINS;
  add_callback_log(&lst, log_cback);
  mark_logs_temp();
}