From d32f5081e1c41324a3464c30c487c6ef57a333d1 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 16 Jul 2012 11:38:39 -0400 Subject: [PATCH 1/2] Coverity 709056: Check return value on fputs in tor-gencert --- changes/cov709056 | 4 ++++ src/tools/tor-gencert.c | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 changes/cov709056 diff --git a/changes/cov709056 b/changes/cov709056 new file mode 100644 index 0000000000..64a75ad8a2 --- /dev/null +++ b/changes/cov709056 @@ -0,0 +1,4 @@ + o Minor bugfixes: + - Check return value of fputs() when writing authority certificate + file. Fixes Coverity issue 709056; bugfix on 0.2.0.1-alpha. + diff --git a/src/tools/tor-gencert.c b/src/tools/tor-gencert.c index a8ffc07796..38b2101a3c 100644 --- a/src/tools/tor-gencert.c +++ b/src/tools/tor-gencert.c @@ -497,7 +497,12 @@ generate_certificate(void) return 1; } - fputs(buf, f); + if (fputs(buf, f) < 0) { + log_err(LD_GENERAL, "Couldn't write to %s: %s", + certificate_file, strerror(errno)); + fclose(f); + return 1; + } fclose(f); return 0; } From 93b730175566de2dcf783b1ce4b3fd87a6f7375e Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 16 Jul 2012 11:49:45 -0400 Subject: [PATCH 2/2] 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. --- changes/bug6397 | 4 ++++ src/or/circuitbuild.c | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 changes/bug6397 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,