[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] When there are no dir_server_ts to choose, don't crash
commit 8b5787ec0d99a130ead302f7c6b4a256325ac08f
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Tue Dec 18 21:32:53 2012 -0500
When there are no dir_server_ts to choose, don't crash
It's important not to call choose_array_element_by_weight and then
pass its return value unchecked to smartlist_get : it is allowed to
return -1.
Fixes bug 7756; bugfix on 4e3d07a6 (not in any released Tor)
---
src/or/routerlist.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 972d451..898b9b5 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -1270,7 +1270,7 @@ dirserver_choose_by_weight(const smartlist_t *servers, double authority_weight)
scale_array_elements_to_u64(weights, n, NULL);
i = choose_array_element_by_weight(weights, n);
tor_free(weights);
- return smartlist_get(servers, i);
+ return (i < 0) ? NULL : smartlist_get(servers, i);
}
/** Choose randomly from among the dir_server_ts in sourcelist that
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits