diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-01-15 05:57:19 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-01-15 05:57:19 +0000 |
commit | 24aae484c93b09c7fc735e53874f02a22e4b5b43 (patch) | |
tree | 52b359e727d2a0c6325fd21ef881b20818f32baa | |
parent | a984011814b3de3c4a300c364893cd6c6cc8ec05 (diff) | |
download | tor-24aae484c93b09c7fc735e53874f02a22e4b5b43.tar tor-24aae484c93b09c7fc735e53874f02a22e4b5b43.tar.gz |
r17624@catbus: nickm | 2008-01-15 00:42:01 -0500
Fixes to more anonymously-reported typos and logic errors.
svn:r13136
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | src/common/util.c | 2 | ||||
-rw-r--r-- | src/or/connection_edge.c | 1 | ||||
-rw-r--r-- | src/or/control.c | 2 | ||||
-rw-r--r-- | src/or/dirvote.c | 2 | ||||
-rw-r--r-- | src/or/eventdns.c | 1 | ||||
-rw-r--r-- | src/or/routerlist.c | 5 |
7 files changed, 14 insertions, 7 deletions
@@ -50,6 +50,14 @@ Changes in version 0.2.0.16-alpha - 2008-01-?? - Avoid segfault in the case where a badly behaved v2 versioning directory sends a signed networkstatus with missing client-versions. Bugfix on 0.1.2. + - Avoid segfaults on certain complex invocations of + router_get_by_hexdigest(). Bugfix on 0.1.2. + - Correct bad index on array access in parse_http_time(). Bugfix + on 0.2.0. + - Fix possible bug in vote generation when server versions are present + but client versions are not. + - Fix rare bug on REDIRECTSTREAM control command when called with no + port set: it could erroneously report an error when none had happened. o Minor features (controller): - Get NS events working again. (Patch from tup) diff --git a/src/common/util.c b/src/common/util.c index 143e105ba..8f08c9b6a 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -1271,7 +1271,7 @@ parse_http_time(const char *date, struct tm *tm) } } - month[4] = '\0'; + month[3] = '\0'; /* Okay, now decode the month. */ for (i = 0; i < 12; ++i) { if (!strcasecmp(MONTH_NAMES[i], month)) { diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 54c6f87d7..c42e8ca4f 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -2304,6 +2304,7 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ) address = tor_strdup(or_circ->p_conn->_base.address); else address = tor_strdup("127.0.0.1"); + port = 1; /*XXXX020 set this to something sensible? - NM*/ } else { log_warn(LD_BUG, "Got an unexpected command %d", (int)rh.command); end_payload[0] = END_STREAM_REASON_INTERNAL; diff --git a/src/or/control.c b/src/or/control.c index d216339b3..d6424d858 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -2325,7 +2325,7 @@ handle_control_redirectstream(control_connection_t *conn, uint32_t len, connection_printf_to_buf(conn, "552 Unknown stream \"%s\"\r\n", (char*)smartlist_get(args, 0)); } else { - int ok; + int ok = 1; if (smartlist_len(args) > 2) { /* they included a port too */ new_port = (uint16_t) tor_parse_ulong(smartlist_get(args, 2), 10, 1, 65535, &ok, NULL); diff --git a/src/or/dirvote.c b/src/or/dirvote.c index a4b749273..328e05aa8 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -82,7 +82,7 @@ format_networkstatus_vote(crypto_pk_env_t *private_signing_key, char *cp; if (client_versions) v_len += strlen(client_versions); - if (client_versions) + if (server_versions) v_len += strlen(server_versions); version_lines = tor_malloc(v_len); cp = version_lines; diff --git a/src/or/eventdns.c b/src/or/eventdns.c index d923d26cc..f6dbe0301 100644 --- a/src/or/eventdns.c +++ b/src/or/eventdns.c @@ -2118,6 +2118,7 @@ _evdns_nameserver_add_impl(unsigned long int address, int port) { #else fcntl(ns->socket, F_SETFL, O_NONBLOCK); #endif + memset(&sin, 0, sizeof(sin)); sin.sin_addr.s_addr = address; sin.sin_port = htons(port); sin.sin_family = AF_INET; diff --git a/src/or/routerlist.c b/src/or/routerlist.c index e789322b3..1c48c762a 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -492,7 +492,6 @@ _compare_signed_descriptors_by_age(const void **_a, const void **_b) static int router_rebuild_store(int force, desc_store_t *store) { - or_options_t *options; smartlist_t *chunk_list = NULL; char *fname = NULL, *fname_tmp = NULL; int r = -1; @@ -518,8 +517,6 @@ router_rebuild_store(int force, desc_store_t *store) log_info(LD_DIR, "Rebuilding %s cache", store->description); - options = get_options(); - fname = get_datadir_fname(store->fname_base); fname_tmp = get_datadir_fname_suffix(store->fname_base, ".tmp"); @@ -1903,7 +1900,7 @@ router_get_by_hexdigest(const char *hexdigest) ri = router_get_by_digest(digest); - if (len > HEX_DIGEST_LEN) { + if (ri && len > HEX_DIGEST_LEN) { if (hexdigest[HEX_DIGEST_LEN] == '=') { if (strcasecmp(ri->nickname, hexdigest+HEX_DIGEST_LEN+1) || !ri->is_named) |