aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjuga <juga@riseup.net>2023-11-18 17:45:28 +0000
committerDavid Goulet <dgoulet@torproject.org>2024-01-30 10:47:13 -0500
commit56819b0a5027807ed6c7894c164a541bf32ee957 (patch)
tree5dc244819a6c7be3e42da01b9fe9411b2e116302 /src
parentee5be2bebc977fc723e3bc95ff9ac9a9f8bd732f (diff)
downloadtor-56819b0a5027807ed6c7894c164a541bf32ee957.tar.gz
tor-56819b0a5027807ed6c7894c164a541bf32ee957.zip
bwauth: Allow "node_id" KeyValue without "$"
Allow "node_id" KeyValue without the dollar sign at the start of the hexdigit in the BandwidthFiles, in order to easier database queries combining Tor documents in which the relays fingerprint doesn't include it. Bugfix on all supported versions of Tor. Closes #40891
Diffstat (limited to 'src')
-rw-r--r--src/feature/dirauth/bwauth.c10
-rw-r--r--src/test/test_dir.c3
2 files changed, 9 insertions, 4 deletions
diff --git a/src/feature/dirauth/bwauth.c b/src/feature/dirauth/bwauth.c
index 90b425842a..b5b1081e47 100644
--- a/src/feature/dirauth/bwauth.c
+++ b/src/feature/dirauth/bwauth.c
@@ -434,15 +434,19 @@ measured_bw_line_parse(measured_bw_line_t *out, const char *orig_line,
return -1;
}
got_bw=1;
- } else if (strcmpstart(cp, "node_id=$") == 0) {
+ // Allow node_id to start with or without the dollar sign.
+ } else if (strcmpstart(cp, "node_id=") == 0) {
if (got_node_id) {
log_warn(LD_DIRSERV, "Double node_id= in bandwidth file line: %s",
escaped(orig_line));
tor_free(line);
return -1;
}
- cp+=strlen("node_id=$");
-
+ if (strcmpstart(cp, "node_id=$") == 0) {
+ cp+=strlen("node_id=$");
+ } else if (strcmpstart(cp, "node_id=") == 0) {
+ cp+=strlen("node_id=");
+ }
if (strlen(cp) != HEX_DIGEST_LEN ||
base16_decode(out->node_id, DIGEST_LEN,
cp, HEX_DIGEST_LEN) != DIGEST_LEN) {
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 248fd8ab5d..4ecf31038e 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -2072,6 +2072,8 @@ test_dir_measured_bw_kb(void *arg)
int i;
const char *lines_pass[] = {
"node_id=$557365204145532d32353620696e73746561642e bw=1024\n",
+ /* check whether node_id does not need the dollar sign at the start */
+ "node_id=557365204145532d32353620696e73746561642e bw=1024\n",
"node_id=$557365204145532d32353620696e73746561642e\t bw=1024 \n",
" node_id=$557365204145532d32353620696e73746561642e bw=1024\n",
"\tnoise\tnode_id=$557365204145532d32353620696e73746561642e "
@@ -2129,7 +2131,6 @@ test_dir_measured_bw_kb(void *arg)
" node_id= ",
"node_id==$557365204145532d32353620696e73746561642e bw==1024\n",
"node_id=$55736520414552d32353620696e73746561642e bw=1024\n",
- "node_id=557365204145532d32353620696e73746561642e bw=1024\n",
"node_id= $557365204145532d32353620696e73746561642e bw=0.23\n",
/* Test that a line with vote=0 will fail too, so that it is ignored. */