mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Correct the bulletproofing of routerlist_insert()
The original code updated some variables, but forgot to remove a replaced old-routerdesc from rl->old_routers. Related to bug 1776.
This commit is contained in:
parent
8e07798284
commit
3ed4c5dc05
5
changes/routerlist_ins_replace
Normal file
5
changes/routerlist_ins_replace
Normal file
@ -0,0 +1,5 @@
|
||||
o Minor bugfixes:
|
||||
- If we hit the error case where routerlist_insert() replaces an
|
||||
existing (old) server descriptor, make sure to remove that
|
||||
server descriptor from the old_routers list. Fix related to bug
|
||||
1776. Bugfix on 0.2.2.18-alpha.
|
@ -2815,6 +2815,13 @@ routerlist_insert(routerlist_t *rl, routerinfo_t *ri)
|
||||
ri->cache_info.signed_descriptor_digest,
|
||||
&(ri->cache_info));
|
||||
if (sd_old) {
|
||||
int idx = sd_old->routerlist_index;
|
||||
sd_old->routerlist_index = -1;
|
||||
smartlist_del(rl->old_routers, idx);
|
||||
if (idx < smartlist_len(rl->old_routers)) {
|
||||
signed_descriptor_t *d = smartlist_get(rl->old_routers, idx);
|
||||
d->routerlist_index = idx;
|
||||
}
|
||||
rl->desc_store.bytes_dropped += sd_old->signed_descriptor_len;
|
||||
sdmap_remove(rl->desc_by_eid_map, sd_old->extra_info_digest);
|
||||
signed_descriptor_free(sd_old);
|
||||
|
Loading…
Reference in New Issue
Block a user