]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix a bug related to moving signing_key_cert
authorNick Mathewson <nickm@torproject.org>
Fri, 20 May 2016 11:59:09 +0000 (07:59 -0400)
committerNick Mathewson <nickm@torproject.org>
Fri, 20 May 2016 11:59:09 +0000 (07:59 -0400)
Now that the field exists in signed_descriptor_t, we need to make
sure we free it when we free a signed_descriptor_t, and we need to
make sure that we don't free it when we convert a routerinfo_t to a
signed_descriptor_t.

But not in any released Tor. I found this while working on #19128.

One problem: I don't see how this could cause 19128.

src/or/routerlist.c

index f9247cba08e780156bb9cb0be55abe30b9c6f05c..d49814f056d771ed5c1096c67d71abe72dadd5c0 100644 (file)
@@ -2932,6 +2932,7 @@ signed_descriptor_free(signed_descriptor_t *sd)
     return;
 
   tor_free(sd->signed_descriptor_body);
+  tor_cert_free(sd->signing_key_cert);
 
   memset(sd, 99, sizeof(signed_descriptor_t)); /* Debug bad mem usage */
   tor_free(sd);
@@ -2949,6 +2950,7 @@ signed_descriptor_from_routerinfo(routerinfo_t *ri)
   memcpy(sd, &(ri->cache_info), sizeof(signed_descriptor_t));
   sd->routerlist_index = -1;
   ri->cache_info.signed_descriptor_body = NULL;
+  ri->cache_info.signing_key_cert = NULL;
   routerinfo_free(ri);
   return sd;
 }