aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-05-20 07:59:09 -0400
committerNick Mathewson <nickm@torproject.org>2016-05-20 07:59:09 -0400
commit50cbf220994c7cec5939666cbf990acb4aaa46c6 (patch)
tree905087ffdd100348c573fb6decf777fd8bfadd89
parent33841a60303ce8febf8180829a868dcc43924d77 (diff)
downloadtor-50cbf220994c7cec5939666cbf990acb4aaa46c6.tar.gz
tor-50cbf220994c7cec5939666cbf990acb4aaa46c6.zip
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.
-rw-r--r--src/or/routerlist.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index f9247cba08..d49814f056 100644
--- a/src/or/routerlist.c
+++ b/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;
}