return;
routerset_free(options->_ExcludeExitNodesUnion);
- tor_free(options->BridgePassword_AuthDigest);
+ tor_free(options->_BridgePassword_AuthDigest);
config_free(&options_format, options);
}
"BridgePassword.");
return -1;
}
- options->BridgePassword_AuthDigest = tor_malloc(DIGEST256_LEN);
- crypto_digest256(options->BridgePassword_AuthDigest,
+ options->_BridgePassword_AuthDigest = tor_malloc(DIGEST256_LEN);
+ crypto_digest256(options->_BridgePassword_AuthDigest,
http_authenticator, strlen(http_authenticator),
DIGEST_SHA256);
tor_free(http_authenticator);
}
if (options->BridgeAuthoritativeDir &&
- options->BridgePassword_AuthDigest &&
+ options->_BridgePassword_AuthDigest &&
connection_dir_is_encrypted(conn) &&
!strcmp(url,"/tor/networkstatus-bridges")) {
char *status;
/* now make sure the password is there and right */
if (!header ||
- tor_memneq(digest, options->BridgePassword_AuthDigest, DIGEST256_LEN)) {
+ tor_memneq(digest,
+ options->_BridgePassword_AuthDigest, DIGEST256_LEN)) {
write_http_status_line(conn, 404, "Not found");
tor_free(header);
goto done;
* for bridge statuses -- but only if the requests use this password. */
char *BridgePassword;
/** If BridgePassword is set, this is a SHA256 digest of the basic http
- * authenticator for it. */
- char *BridgePassword_AuthDigest;
+ * authenticator for it. Used so we can do a time-independent comparison. */
+ char *_BridgePassword_AuthDigest;
int UseBridges; /**< Boolean: should we start all circuits with a bridge? */
config_line_t *Bridges; /**< List of bootstrap bridge addresses. */