Browse Source

Fix major errors in freeing getaddrinfo sandbox cache

Patch from cypherpunks. Fixes bug 20710; bugfix on 0.2.5.5-alpha.
Nick Mathewson 7 years ago
parent
commit
6a069959c6
1 changed files with 3 additions and 2 deletions
  1. 3 2
      src/common/sandbox.c

+ 3 - 2
src/common/sandbox.c

@@ -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);