]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
fixup! Refactor initiate_descriptor_downloads() to be safer
authorNick Mathewson <nickm@torproject.org>
Tue, 23 Sep 2014 16:56:16 +0000 (12:56 -0400)
committerNick Mathewson <nickm@torproject.org>
Tue, 23 Sep 2014 16:56:16 +0000 (12:56 -0400)
Calculate digest_len correctly.

Also, refactor setting of initial variables to look a little nicer.

src/or/routerlist.c

index e65898636a3ca79eaddfa764ae76de679526f642..efa4abbac11b95bc17e071202f281b1db49a9bce 100644 (file)
@@ -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) {