summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2017-04-21 11:49:30 -0400
committerNick Mathewson <nickm@torproject.org>2017-04-24 09:20:13 -0400
commit4a9f6894300781b998b0753dd0f5a388bb61cc91 (patch)
tree192b0d8fa6baae2496a182ae80ea6d54b531bde3
parent7d7770f7359763871667e0150aebc50856f9d5fd (diff)
downloadtor-4a9f6894300781b998b0753dd0f5a388bb61cc91.tar.gz
tor-4a9f6894300781b998b0753dd0f5a388bb61cc91.zip
control: Wrong check on base16_decode return value
The GETINFO extra-info/digest/<digest> broke in commit 568dc27a19 that refactored the base16_decode() API to return the decoded length. Unfortunately, that if() condition should have checked for the correct length instead of an error which broke the command in tor-0.2.9.1-alpha. Fixes #22034 Signed-off-by: David Goulet <dgoulet@torproject.org>
-rw-r--r--changes/bug220344
-rw-r--r--src/or/control.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/changes/bug22034 b/changes/bug22034
new file mode 100644
index 0000000000..6d9e188740
--- /dev/null
+++ b/changes/bug22034
@@ -0,0 +1,4 @@
+ o Minor bugfixes (control port, regression):
+ - The GETINFO extra-info/digest/<digest> command was broken because of a
+ wrong base16 decode return value check. In was introduced in a refactor
+ of that API. Fixex bug #22034; bugfix on tor-0.2.9.1-alpha.
diff --git a/src/or/control.c b/src/or/control.c
index c8c5062e86..1bf1e33bbc 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -2055,7 +2055,7 @@ getinfo_helper_dir(control_connection_t *control_conn,
char d[DIGEST_LEN];
signed_descriptor_t *sd = NULL;
if (base16_decode(d, sizeof(d), question, strlen(question))
- != sizeof(d)) {
+ == sizeof(d)) {
/* XXXX this test should move into extrainfo_get_by_descriptor_digest,
* but I don't want to risk affecting other parts of the code,
* especially since the rules for using our own extrainfo (including