Browse Source

Fix a bug related to moving signing_key_cert

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.
Nick Mathewson 8 years ago
parent
commit
50cbf22099
1 changed files with 2 additions and 0 deletions
  1. 2 0
      src/or/routerlist.c

+ 2 - 0
src/or/routerlist.c

@@ -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;
 }