Commit 900ddcb8 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

bugfix on r11298:

Fix a minor memory leak whenever we parse guards from our state
file. Bugfix on 0.2.0.7-alpha.


svn:r11862
parent 487f985f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -91,6 +91,8 @@ Changes in version 0.2.0.8-alpha - 2007-10-12
  o Minor bugfixes (of some sort):
    - Stop calling tor_strlower() on uninitialized memory in some cases.
      Bugfix in 0.2.0.7-alpha.
    - Fix a minor memory leak whenever we parse guards from our state
      file. Bugfix on 0.2.0.7-alpha.

  o Code simplifications and refactoring:
    - Make a bunch of functions static.  Remove some dead code.
+2 −2
Original line number Diff line number Diff line
@@ -1530,8 +1530,8 @@ struct open_file_t {
/** Try to start writing to the file in <b>fname</b>, passing the flags
 * <b>open_flags</b> to the open() syscall, creating the file (if needed) with
 * access value <b>mode</b>.  If the O_APPEND flag is set, we append to the
 * original file.  Otherwise, we open a new a temporary file in the same
 * directory, and either replace the original or remove the temprorary file
 * original file.  Otherwise, we open a new temporary file in the same
 * directory, and either replace the original or remove the temporary file
 * when we're done.
 *
 * Return the fd for the newly opened file, and store working data in
+5 −3
Original line number Diff line number Diff line
@@ -2404,7 +2404,7 @@ entry_guards_prepend_from_config(void)
  /* Finally, the remaining EntryNodes, unless we're strict */
  if (options->StrictEntryNodes) {
    SMARTLIST_FOREACH(old_entry_guards_not_on_list, entry_guard_t *, e,
                      tor_free(e));
                      entry_guard_free(e));
  } else {
    smartlist_add_all(entry_guards, old_entry_guards_not_on_list);
  }
@@ -2641,11 +2641,13 @@ entry_guards_parse_state(or_state_t *state, int set, char **msg)
   });

  if (*msg || !set) {
    SMARTLIST_FOREACH(new_entry_guards, entry_guard_t *, e, tor_free(e));
    SMARTLIST_FOREACH(new_entry_guards, entry_guard_t *, e,
                      entry_guard_free(e));
    smartlist_free(new_entry_guards);
  } else { /* !*err && set */
    if (entry_guards) {
      SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, tor_free(e));
      SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e,
                        entry_guard_free(e));
      smartlist_free(entry_guards);
    }
    entry_guards = new_entry_guards;