mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
r12802@catbus: nickm | 2007-05-19 14:12:27 -0400
clear some ram when freeing it; add some more checks to assert_routerlist_ok. svn:r10218
This commit is contained in:
parent
58d27cfc29
commit
0a27b53252
@ -334,8 +334,7 @@ init_keys(void)
|
|||||||
log_err(LD_GENERAL,"Generated a routerinfo we couldn't parse.");
|
log_err(LD_GENERAL,"Generated a routerinfo we couldn't parse.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (dirserv_add_descriptor(ri, &m)
|
if (dirserv_add_descriptor(ri, &m) < 0) {
|
||||||
< 0) {
|
|
||||||
log_err(LD_GENERAL,"Unable to add own descriptor to directory: %s",
|
log_err(LD_GENERAL,"Unable to add own descriptor to directory: %s",
|
||||||
m?m:"<unknown error>");
|
m?m:"<unknown error>");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1608,6 +1608,10 @@ routerinfo_free(routerinfo_t *router)
|
|||||||
smartlist_free(router->declared_family);
|
smartlist_free(router->declared_family);
|
||||||
}
|
}
|
||||||
addr_policy_free(router->exit_policy);
|
addr_policy_free(router->exit_policy);
|
||||||
|
|
||||||
|
/* Remove once 414/417 is fixed. But I have a hunch... */
|
||||||
|
memset(router, 77, sizeof(routerinfo_t));
|
||||||
|
|
||||||
tor_free(router);
|
tor_free(router);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1619,6 +1623,9 @@ extrainfo_free(extrainfo_t *extrainfo)
|
|||||||
return;
|
return;
|
||||||
tor_free(extrainfo->cache_info.signed_descriptor_body);
|
tor_free(extrainfo->cache_info.signed_descriptor_body);
|
||||||
tor_free(extrainfo->pending_sig);
|
tor_free(extrainfo->pending_sig);
|
||||||
|
|
||||||
|
/* Remove once 414/417 is fixed. But I have a hunch... */
|
||||||
|
memset(extrainfo, 88, sizeof(extrainfo_t));
|
||||||
tor_free(extrainfo);
|
tor_free(extrainfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1627,6 +1634,9 @@ static void
|
|||||||
signed_descriptor_free(signed_descriptor_t *sd)
|
signed_descriptor_free(signed_descriptor_t *sd)
|
||||||
{
|
{
|
||||||
tor_free(sd->signed_descriptor_body);
|
tor_free(sd->signed_descriptor_body);
|
||||||
|
|
||||||
|
/* Remove once 414/417 is fixed. But I have a hunch... */
|
||||||
|
memset(sd, 99, sizeof(signed_descriptor_t));
|
||||||
tor_free(sd);
|
tor_free(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1972,6 +1982,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old,
|
|||||||
/* digests don't match; digestmap_set didn't replace */
|
/* digests don't match; digestmap_set didn't replace */
|
||||||
digestmap_remove(rl->desc_digest_map,
|
digestmap_remove(rl->desc_digest_map,
|
||||||
ri_old->cache_info.signed_descriptor_digest);
|
ri_old->cache_info.signed_descriptor_digest);
|
||||||
|
}
|
||||||
|
|
||||||
ei_tmp = digestmap_remove(rl->extra_info_map,
|
ei_tmp = digestmap_remove(rl->extra_info_map,
|
||||||
ri_old->cache_info.extra_info_digest);
|
ri_old->cache_info.extra_info_digest);
|
||||||
@ -1980,7 +1991,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old,
|
|||||||
ei_tmp->cache_info.signed_descriptor_len;
|
ei_tmp->cache_info.signed_descriptor_len;
|
||||||
extrainfo_free(ei_tmp);
|
extrainfo_free(ei_tmp);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!tor_digest_is_zero(ri_old->cache_info.extra_info_digest))
|
if (!tor_digest_is_zero(ri_old->cache_info.extra_info_digest))
|
||||||
digestmap_remove(rl->desc_by_eid_map,
|
digestmap_remove(rl->desc_by_eid_map,
|
||||||
ri_old->cache_info.extra_info_digest);
|
ri_old->cache_info.extra_info_digest);
|
||||||
@ -4951,6 +4962,11 @@ routerlist_assert_ok(routerlist_t *rl)
|
|||||||
r->cache_info.signed_descriptor_digest);
|
r->cache_info.signed_descriptor_digest);
|
||||||
tor_assert(&(r->cache_info) == sd2);
|
tor_assert(&(r->cache_info) == sd2);
|
||||||
tor_assert(r->routerlist_index == r_sl_idx);
|
tor_assert(r->routerlist_index == r_sl_idx);
|
||||||
|
if (!tor_digest_is_zero(r->cache_info.extra_info_digest)) {
|
||||||
|
signed_descriptor_t *sd3 =
|
||||||
|
digestmap_get(rl->desc_by_eid_map, r->cache_info.extra_info_digest);
|
||||||
|
tor_assert(sd3 == &(r->cache_info));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
SMARTLIST_FOREACH(rl->old_routers, signed_descriptor_t *, sd,
|
SMARTLIST_FOREACH(rl->old_routers, signed_descriptor_t *, sd,
|
||||||
{
|
{
|
||||||
@ -4958,6 +4974,11 @@ routerlist_assert_ok(routerlist_t *rl)
|
|||||||
tor_assert(sd != &(r2->cache_info));
|
tor_assert(sd != &(r2->cache_info));
|
||||||
sd2 = digestmap_get(rl->desc_digest_map, sd->signed_descriptor_digest);
|
sd2 = digestmap_get(rl->desc_digest_map, sd->signed_descriptor_digest);
|
||||||
tor_assert(sd == sd2);
|
tor_assert(sd == sd2);
|
||||||
|
if (!tor_digest_is_zero(sd->extra_info_digest)) {
|
||||||
|
signed_descriptor_t *sd3 =
|
||||||
|
digestmap_get(rl->desc_by_eid_map, sd->extra_info_digest);
|
||||||
|
tor_assert(sd3 == sd);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
iter = digestmap_iter_init(rl->identity_map);
|
iter = digestmap_iter_init(rl->identity_map);
|
||||||
while (!digestmap_iter_done(iter)) {
|
while (!digestmap_iter_done(iter)) {
|
||||||
@ -4979,6 +5000,32 @@ routerlist_assert_ok(routerlist_t *rl)
|
|||||||
tor_assert(!memcmp(sd->signed_descriptor_digest, d, DIGEST_LEN));
|
tor_assert(!memcmp(sd->signed_descriptor_digest, d, DIGEST_LEN));
|
||||||
iter = digestmap_iter_next(rl->desc_digest_map, iter);
|
iter = digestmap_iter_next(rl->desc_digest_map, iter);
|
||||||
}
|
}
|
||||||
|
iter = digestmap_iter_init(rl->desc_by_eid_map);
|
||||||
|
while (!digestmap_iter_done(iter)) {
|
||||||
|
const char *d;
|
||||||
|
void *_sd;
|
||||||
|
signed_descriptor_t *sd;
|
||||||
|
digestmap_iter_get(iter, &d, &_sd);
|
||||||
|
sd = _sd;
|
||||||
|
tor_assert(!memcmp(sd->extra_info_digest, d, DIGEST_LEN));
|
||||||
|
iter = digestmap_iter_next(rl->desc_by_eid_map, iter);
|
||||||
|
}
|
||||||
|
iter = digestmap_iter_init(rl->extra_info_map);
|
||||||
|
while (!digestmap_iter_done(iter)) {
|
||||||
|
const char *d;
|
||||||
|
void *_ei;
|
||||||
|
extrainfo_t *ei;
|
||||||
|
signed_descriptor_t *sd;
|
||||||
|
digestmap_iter_get(iter, &d, &_ei);
|
||||||
|
ei = _ei;
|
||||||
|
tor_assert(!memcmp(ei->cache_info.signed_descriptor_digest,
|
||||||
|
d, DIGEST_LEN));
|
||||||
|
sd = digestmap_get(rl->desc_by_eid_map,
|
||||||
|
ei->cache_info.signed_descriptor_digest);
|
||||||
|
tor_assert(sd);
|
||||||
|
tor_assert(!memcmp(ei->cache_info.signed_descriptor_digest,
|
||||||
|
sd->extra_info_digest, DIGEST_LEN));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Debugging function. With any luck, we can remove this soon. Fail with an
|
/** Debugging function. With any luck, we can remove this soon. Fail with an
|
||||||
|
Loading…
Reference in New Issue
Block a user