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.
This commit is contained in:
Nick Mathewson 2012-07-16 11:49:45 -04:00
parent d32f5081e1
commit 93b7301755
2 changed files with 9 additions and 5 deletions

4
changes/bug6397 Normal file
View File

@ -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.

View File

@ -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 *sp;
char *val = digestmap_get(added_by, e->identity); char *val = digestmap_get(added_by, e->identity);
if (val && (sp = strchr(val, ' '))) { 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); e->chosen_on_date = time(NULL) - crypto_rand_int(3600*24*30);
} }
} }
if (node->path_bias_disabled && !node->bad_since) if (e->path_bias_disabled && !e->bad_since)
node->bad_since = time(NULL); e->bad_since = time(NULL);
}); }
SMARTLIST_FOREACH_END(e);
if (*msg || !set) { if (*msg || !set) {
SMARTLIST_FOREACH(new_entry_guards, entry_guard_t *, e, SMARTLIST_FOREACH(new_entry_guards, entry_guard_t *, e,