Commit 0ac9a3df authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Fix a logic error in 98aee847. Found by boboper

parent 2849a956
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1569,6 +1569,7 @@ networkstatus_set_current_consensus(const char *consensus,
  const digests_t *current_digests = NULL;
  consensus_waiting_for_certs_t *waiting = NULL;
  time_t current_valid_after = 0;
  int free_consensus = 1; /* Free 'c' at the end of the function */

  if (flav < 0) {
    /* XXXX we don't handle unrecognized flavors yet. */
@@ -1661,7 +1662,7 @@ networkstatus_set_current_consensus(const char *consensus,
        networkstatus_vote_free(waiting->consensus);
        tor_free(waiting->body);
        waiting->consensus = c;
        c = NULL; /* Prevent free. */
        free_consensus = 0;
        waiting->body = tor_strdup(consensus);
        waiting->set_at = now;
        waiting->dl_failed = 0;
@@ -1737,7 +1738,7 @@ networkstatus_set_current_consensus(const char *consensus,

  if (flav == USABLE_CONSENSUS_FLAVOR) {
    current_consensus = c;
    c = NULL; /* Prevent free. */
    free_consensus = 0; /* Prevent free. */

    /* XXXXNM Microdescs: needs a non-ns variant. */
    update_consensus_networkstatus_fetch_time(now);
@@ -1780,6 +1781,7 @@ networkstatus_set_current_consensus(const char *consensus,

  result = 0;
 done:
  if (free_consensus)
    networkstatus_vote_free(c);
  tor_free(consensus_fname);
  tor_free(unverified_fname);