aboutsummaryrefslogtreecommitdiff
path: root/src/or/config.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-04-01 00:46:52 -0400
committerNick Mathewson <nickm@torproject.org>2012-04-01 00:46:52 -0400
commit341c6a59db09a43ee2301a6c59158b09ec55134b (patch)
tree064d7997faa86393decb522b2c6267003c195d5c /src/or/config.c
parent458718d4975661831fa21d9f2653932e17c1bae0 (diff)
parent9a69c24150965e54322ed9616638d4f1939b1289 (diff)
downloadtor-341c6a59db09a43ee2301a6c59158b09ec55134b.tar
tor-341c6a59db09a43ee2301a6c59158b09ec55134b.tar.gz
Merge remote-tracking branch 'origin/maint-0.2.2'
Conflicts: src/or/config.c Conflict was in or_options_free, where two newly added fields had free calls in the same place.
Diffstat (limited to 'src/or/config.c')
-rw-r--r--src/or/config.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/or/config.c b/src/or/config.c
index 2a8c54096..2ce930bd7 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -813,6 +813,7 @@ or_options_free(or_options_t *options)
rs, routerset_free(rs));
smartlist_free(options->NodeFamilySets);
}
+ tor_free(options->BridgePassword_AuthDigest);
config_free(&options_format, options);
}
@@ -1547,6 +1548,24 @@ options_act(const or_options_t *old_options)
/* Change the cell EWMA settings */
cell_ewma_set_scale_factor(options, networkstatus_get_latest_consensus());
+ /* Update the BridgePassword's hashed version as needed. We store this as a
+ * digest so that we can do side-channel-proof comparisons on it.
+ */
+ if (options->BridgePassword) {
+ char *http_authenticator;
+ http_authenticator = alloc_http_authenticator(options->BridgePassword);
+ if (!http_authenticator) {
+ log_warn(LD_BUG, "Unable to allocate HTTP authenticator. Not setting "
+ "BridgePassword.");
+ return -1;
+ }
+ options->BridgePassword_AuthDigest = tor_malloc(DIGEST256_LEN);
+ crypto_digest256(options->BridgePassword_AuthDigest,
+ http_authenticator, strlen(http_authenticator),
+ DIGEST_SHA256);
+ tor_free(http_authenticator);
+ }
+
/* Check for transitions that need action. */
if (old_options) {
int revise_trackexithosts = 0;