The first happens on an error case when a controller wants an impossible directory object. The second happens when we can't write our fingerprint file.
@@ -1536,6 +1536,7 @@ getinfo_helper_dir(control_connection_t *control_conn,
if (res) {
log_warn(LD_CONTROL, "getinfo '%s': %s", question, msg);
smartlist_free(descs);
+ tor_free(url);
return -1;
}
SMARTLIST_FOREACH(descs, signed_descriptor_t *, sd,
@@ -588,6 +588,7 @@ init_keys(void)
if (write_str_to_file(keydir, fingerprint_line, 0)) {
log_err(LD_FS, "Error writing fingerprint line to file");
tor_free(keydir);
+ tor_free(cp);