From: Nick Mathewson Date: Wed, 7 Nov 2007 17:29:16 +0000 (+0000) Subject: r16527@catbus: nickm | 2007-11-07 12:27:59 -0500 X-Git-Tag: tor-0.2.0.10-alpha~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b2d86d83d198d5796e80a8cfbeb36b8892f8dfc;p=thirdparty%2Ftor.git r16527@catbus: nickm | 2007-11-07 12:27:59 -0500 Re-set all of the indices immediately after sorting old_routers. Fixes a crash. svn:r12413 --- diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 11dabfe13c..f51f7cf4e8 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -2987,12 +2987,16 @@ routerlist_remove_old_routers(void) goto done; smartlist_sort(routerlist->old_routers, _compare_old_routers_by_identity); + /* Fix indices. */ + for (i = 0; i < smartlist_len(routerlist_old_routers); ++i) { + signed_descriptor_t *r = smartlist_get(routerlist->old_routers, i); + r->routerlist_index = i; + } /* Iterate through the list from back to front, so when we remove descriptors * we don't mess up groups we haven't gotten to. */ for (i = smartlist_len(routerlist->old_routers)-1; i >= 0; --i) { signed_descriptor_t *r = smartlist_get(routerlist->old_routers, i); - r->routerlist_index = i; if (!cur_id) { cur_id = r->identity_digest; hi = i;