[tor-commits] [tor/master] fixup! Refactor initiate_descriptor_downloads() to be safer

nickm at torproject.org nickm at torproject.org
Fri Jan 23 15:03:15 UTC 2015


commit 0fdfdae7e3a88a9172a51f36ac6b536b5687d401
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue Sep 23 12:56:16 2014 -0400

    fixup! Refactor initiate_descriptor_downloads() to be safer
    
    Calculate digest_len correctly.
    
    Also, refactor setting of initial variables to look a little nicer.
---
 src/or/routerlist.c |   14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index e658986..efa4abb 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -4299,18 +4299,23 @@ MOCK_IMPL(STATIC void, initiate_descriptor_downloads,
            int lo, int hi, int pds_flags))
 {
   char *resource, *cp;
-  int digest_len = DIGEST_LEN, enc_digest_len = HEX_DIGEST_LEN;
-  const char *sep = "+";
-  int b64_256 = 0;
+  int digest_len, enc_digest_len;
+  const char *sep;
+  int b64_256;
   smartlist_t *tmp;
 
   if (purpose == DIR_PURPOSE_FETCH_MICRODESC) {
     /* Microdescriptors are downloaded by "-"-separated base64-encoded
      * 256-bit digests. */
     digest_len = DIGEST256_LEN;
-    enc_digest_len = BASE64_DIGEST256_LEN;
+    enc_digest_len = BASE64_DIGEST256_LEN + 1;
     sep = "-";
     b64_256 = 1;
+  } else {
+    digest_len = DIGEST_LEN;
+    enc_digest_len = HEX_DIGEST_LEN + 1;
+    sep = "+";
+    b64_256 = 0;
   }
 
   if (lo < 0)
@@ -4321,7 +4326,6 @@ MOCK_IMPL(STATIC void, initiate_descriptor_downloads,
   if (hi-lo <= 0)
     return;
 
-  digest_len += 1;  // for the NULL
   tmp = smartlist_new();
 
   for (; lo < hi; ++lo) {





More information about the tor-commits mailing list