]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
fix another mem leak, and point out another for karsten
authorRoger Dingledine <arma@torproject.org>
Sun, 16 Dec 2007 20:46:23 +0000 (20:46 +0000)
committerRoger Dingledine <arma@torproject.org>
Sun, 16 Dec 2007 20:46:23 +0000 (20:46 +0000)
svn:r12841

src/or/routerparse.c

index c386a004a52613160bef1e2eaeea89f1c020f42a..696271bc5439d673e0f6af68cbe2cd8a9cb29cc3 100644 (file)
@@ -3402,7 +3402,7 @@ rend_decrypt_introduction_points(rend_service_descriptor_t *parsed,
     intro_points_encrypted_size = unenclen;
   }
   /* Consider one intro point after the other. */
-  current_ipo = (const char **)&intro_points_encrypted;
+  current_ipo = &intro_points_encrypted;
   intropoints = smartlist_create();
   tokens = smartlist_create();
   if (parsed->intro_keys) {
@@ -3479,6 +3479,9 @@ rend_decrypt_introduction_points(rend_service_descriptor_t *parsed,
     tok->key = NULL; /* Prevent free */
     /* Add extend info to list of introduction points. */
     smartlist_add(intropoints, info);
+    /* XXX if intropoints has items on it, but we goto err the next
+     * time through the loop, we don't free the items in the 'err'
+     * section below. -RD */
   }
   /* Write extend infos to descriptor. */
   /* XXXX020 what if intro_points (&tc) are already set? */
@@ -3506,6 +3509,8 @@ rend_decrypt_introduction_points(rend_service_descriptor_t *parsed,
   SMARTLIST_FOREACH(tokens, directory_token_t *, t, token_free(t));
   smartlist_free(tokens);
 
+  smartlist_free(intropoints);
+
   return result;
 }