From 4a9f6894300781b998b0753dd0f5a388bb61cc91 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Fri, 21 Apr 2017 11:49:30 -0400 Subject: [PATCH] control: Wrong check on base16_decode return value The GETINFO extra-info/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 --- changes/bug22034 | 4 ++++ src/or/control.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 changes/bug22034 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/ 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