Browse Source

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>
David Goulet 7 years ago
parent
commit
4a9f689430
2 changed files with 5 additions and 1 deletions
  1. 4 0
      changes/bug22034
  2. 1 1
      src/or/control.c

+ 4 - 0
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.

+ 1 - 1
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