summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2008-01-15 05:57:19 +0000
committerNick Mathewson <nickm@torproject.org>2008-01-15 05:57:19 +0000
commit24aae484c93b09c7fc735e53874f02a22e4b5b43 (patch)
tree52b359e727d2a0c6325fd21ef881b20818f32baa
parenta984011814b3de3c4a300c364893cd6c6cc8ec05 (diff)
downloadtor-24aae484c93b09c7fc735e53874f02a22e4b5b43.tar.gz
tor-24aae484c93b09c7fc735e53874f02a22e4b5b43.zip
r17624@catbus: nickm | 2008-01-15 00:42:01 -0500
Fixes to more anonymously-reported typos and logic errors. svn:r13136
-rw-r--r--ChangeLog8
-rw-r--r--src/common/util.c2
-rw-r--r--src/or/connection_edge.c1
-rw-r--r--src/or/control.c2
-rw-r--r--src/or/dirvote.c2
-rw-r--r--src/or/eventdns.c1
-rw-r--r--src/or/routerlist.c5
7 files changed, 14 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 144a520ab5..7d6859e368 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 143e105ba6..8f08c9b6af 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 54c6f87d71..c42e8ca4f5 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 d216339b30..d6424d8581 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 a4b7492739..328e05aa8a 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 d923d26cc1..f6dbe03018 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 e789322b33..1c48c762a4 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)