Fix major errors in freeing getaddrinfo sandbox cache

Patch from cypherpunks. Fixes bug 20710; bugfix on 0.2.5.5-alpha.
This commit is contained in:
Nick Mathewson 2016-12-01 10:36:02 -05:00
parent db2571be61
commit 6a069959c6

View File

@ -1486,13 +1486,14 @@ sandbox_add_addrinfo(const char *name)
void
sandbox_free_getaddrinfo_cache(void)
{
cached_getaddrinfo_item_t **next, **item;
cached_getaddrinfo_item_t **next, **item, *this;
for (item = HT_START(getaddrinfo_cache, &getaddrinfo_cache);
item;
item = next) {
this = *item;
next = HT_NEXT_RMV(getaddrinfo_cache, &getaddrinfo_cache, item);
cached_getaddrinfo_item_free(*item);
cached_getaddrinfo_item_free(this);
}
HT_CLEAR(getaddrinfo_cache, &getaddrinfo_cache);