]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
r17624@catbus: nickm | 2008-01-15 00:42:01 -0500
authorNick Mathewson <nickm@torproject.org>
Tue, 15 Jan 2008 05:57:19 +0000 (05:57 +0000)
committerNick Mathewson <nickm@torproject.org>
Tue, 15 Jan 2008 05:57:19 +0000 (05:57 +0000)
 Fixes to more anonymously-reported typos and logic errors.

svn:r13136

ChangeLog
src/common/util.c
src/or/connection_edge.c
src/or/control.c
src/or/dirvote.c
src/or/eventdns.c
src/or/routerlist.c

index 144a520ab5b5516df7f002bb10aa16c1421da9b6..7d6859e36847f12fc5646ed7f4da2f1dd021a57f 100644 (file)
--- 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)
index 143e105ba66a1c262ad5359059be9be383214d0f..8f08c9b6afc4c9642a55f17e107b0f173efd36cc 100644 (file)
@@ -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)) {
index 54c6f87d71ab145094742b4e0963ff78581e9bc2..c42e8ca4f55fcb0bef6f9ebddd6598789337472a 100644 (file)
@@ -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;
index d216339b30e299db9b5264ea021ae4834e66ebea..d6424d85810824357fe9ce47f6bdd175b2adb5bb 100644 (file)
@@ -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);
index a4b7492739129ca6481e308f077965105e173586..328e05aa8ad3a1533445b123dce75f70cde37b07 100644 (file)
@@ -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;
index d923d26cc1af61d015aaee626ae08d5c215faccd..f6dbe03018f7adb08f2c29a439570d4e751d72e5 100644 (file)
@@ -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;
index e789322b335ef25f8d4e4f02c076f9f3ea0c101b..1c48c762a4e170a0f7c219551cfa546f7ce4dd3b 100644 (file)
@@ -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)