summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-07-16 11:49:45 -0400
committerNick Mathewson <nickm@torproject.org>2012-07-16 11:49:45 -0400
commit93b730175566de2dcf783b1ce4b3fd87a6f7375e (patch)
treefe2900491826e6c5570f1da65c3486e36c95cd52
parentd32f5081e1c41324a3464c30c487c6ef57a333d1 (diff)
downloadtor-93b730175566de2dcf783b1ce4b3fd87a6f7375e.tar.gz
tor-93b730175566de2dcf783b1ce4b3fd87a6f7375e.zip
Refer to the correct variable in a loop when parsing entry guard state
Fixes bug 6397 and coverity issue 709599. Bugfix on 0.2.3.17-beta.
-rw-r--r--changes/bug63974
-rw-r--r--src/or/circuitbuild.c10
2 files changed, 9 insertions, 5 deletions
diff --git a/changes/bug6397 b/changes/bug6397
new file mode 100644
index 0000000000..23d8359bd2
--- /dev/null
+++ b/changes/bug6397
@@ -0,0 +1,4 @@
+ o Major bugfixes:
+ - When disabling guards for having too high a proportion of failed
+ circuits, make sure to look at each guard. Fix for bug 6397; bugfix
+ on 0.2.3.17-beta.
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 6d1e4e7643..714bbca34e 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -4728,8 +4728,7 @@ entry_guards_parse_state(or_state_t *state, int set, char **msg)
}
}
- SMARTLIST_FOREACH(new_entry_guards, entry_guard_t *, e,
- {
+ SMARTLIST_FOREACH_BEGIN(new_entry_guards, entry_guard_t *, e) {
char *sp;
char *val = digestmap_get(added_by, e->identity);
if (val && (sp = strchr(val, ' '))) {
@@ -4747,9 +4746,10 @@ entry_guards_parse_state(or_state_t *state, int set, char **msg)
e->chosen_on_date = time(NULL) - crypto_rand_int(3600*24*30);
}
}
- if (node->path_bias_disabled && !node->bad_since)
- node->bad_since = time(NULL);
- });
+ if (e->path_bias_disabled && !e->bad_since)
+ e->bad_since = time(NULL);
+ }
+ SMARTLIST_FOREACH_END(e);
if (*msg || !set) {
SMARTLIST_FOREACH(new_entry_guards, entry_guard_t *, e,