Browse Source

Backport candidate: remove dangerous free(0) on hashtable init

svn:r8499
Nick Mathewson 18 years ago
parent
commit
0f8491a254
2 changed files with 4 additions and 1 deletions
  1. 2 0
      ChangeLog
  2. 2 1
      src/common/ht.h

+ 2 - 0
ChangeLog

@@ -53,6 +53,8 @@ Changes in version 0.1.2.2-alpha - 2006-??-??
     - If we're a directory mirror and we ask for "all" network status
     - If we're a directory mirror and we ask for "all" network status
       documents, we would discard status documents from authorities
       documents, we would discard status documents from authorities
       we don't recognize.
       we don't recognize.
+    - Avoid a memory corruption bug when creating a hash table for the first
+      time.
 
 
   o Documentation
   o Documentation
     - Documented (and renamed) ServerDNSSearchDomains and
     - Documented (and renamed) ServerDNSSearchDomains and

+ 2 - 1
src/common/ht.h

@@ -307,7 +307,8 @@ ht_string_hash(const char *s)
           elm = next;                                                   \
           elm = next;                                                   \
         }                                                               \
         }                                                               \
       }                                                                 \
       }                                                                 \
-      freefn(head->hth_table);                                          \
+      if (head->hth_table)                                              \
+        freefn(head->hth_table);                                        \
       head->hth_table = new_table;                                      \
       head->hth_table = new_table;                                      \
     } else {                                                            \
     } else {                                                            \
       unsigned b, b2;                                                   \
       unsigned b, b2;                                                   \