[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r9628: bugfix on r9568: we were throwing around an uninitialized ni (tor/trunk/src/or)



Author: arma
Date: 2007-02-23 20:26:09 -0500 (Fri, 23 Feb 2007)
New Revision: 9628

Modified:
   tor/trunk/src/or/connection_or.c
   tor/trunk/src/or/dirserv.c
   tor/trunk/src/or/or.h
Log:
bugfix on r9568: we were throwing around an uninitialized
nickname array, and only treating a server as reachable if
the array magically has the right nickname in it. this was
causing the authorities to label only themselves as running,
and clients were "mysteriously" failing.


Modified: tor/trunk/src/or/connection_or.c
===================================================================
--- tor/trunk/src/or/connection_or.c	2007-02-24 01:12:53 UTC (rev 9627)
+++ tor/trunk/src/or/connection_or.c	2007-02-24 01:26:09 UTC (rev 9628)
@@ -591,7 +591,6 @@
                                     char *digest_rcvd)
 {
   crypto_pk_env_t *identity_rcvd=NULL;
-  char nickname[MAX_NICKNAME_LEN+1];
   or_options_t *options = get_options();
   int severity = server_mode(options) ? LOG_PROTOCOL_WARN : LOG_WARN;
   const char *safe_address =
@@ -668,10 +667,10 @@
     }
     if (authdir_mode(options)) {
       /* We initiated this connection to address:port.  Drop all routers
-       * with the same address:port and a different key or nickname.
+       * with the same address:port and a different key.
        */
       dirserv_orconn_tls_done(conn->_base.address, conn->_base.port,
-                              digest_rcvd, nickname, as_advertised);
+                              digest_rcvd, as_advertised);
     }
     if (!as_advertised)
       return -1;

Modified: tor/trunk/src/or/dirserv.c
===================================================================
--- tor/trunk/src/or/dirserv.c	2007-02-24 01:12:53 UTC (rev 9627)
+++ tor/trunk/src/or/dirserv.c	2007-02-24 01:26:09 UTC (rev 9628)
@@ -1914,8 +1914,7 @@
 
 /** Called when a TLS handshake has completed successfully with a
  * router listening at <b>address</b>:<b>or_port</b>, and has yielded
- * a certificate with digest <b>digest_rcvd</b> and nickname
- * <b>nickname_rcvd</b>.
+ * a certificate with digest <b>digest_rcvd</b>.
  *
  * Also, if as_advertised is 1, then inform the reachability checker
  * that we could get to this guy.
@@ -1924,20 +1923,17 @@
 dirserv_orconn_tls_done(const char *address,
                         uint16_t or_port,
                         const char *digest_rcvd,
-                        const char *nickname_rcvd,
                         int as_advertised)
 {
   routerlist_t *rl = router_get_routerlist();
   tor_assert(address);
   tor_assert(digest_rcvd);
-  tor_assert(nickname_rcvd);
 
   SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, {
     if (!strcasecmp(address, ri->address) && or_port == ri->or_port &&
         as_advertised &&
-        !memcmp(ri->cache_info.identity_digest, digest_rcvd, DIGEST_LEN) &&
-        !strcasecmp(nickname_rcvd, ri->nickname)) {
-      /* correct nickname and digest. mark this router reachable! */
+        !memcmp(ri->cache_info.identity_digest, digest_rcvd, DIGEST_LEN)) {
+      /* correct digest. mark this router reachable! */
       log_info(LD_DIRSERV, "Found router %s to be reachable. Yay.",
                ri->nickname);
       ri->last_reachable = time(NULL);

Modified: tor/trunk/src/or/or.h
===================================================================
--- tor/trunk/src/or/or.h	2007-02-24 01:12:53 UTC (rev 9627)
+++ tor/trunk/src/or/or.h	2007-02-24 01:26:09 UTC (rev 9628)
@@ -2465,7 +2465,6 @@
 void dirserv_orconn_tls_done(const char *address,
                              uint16_t or_port,
                              const char *digest_rcvd,
-                             const char *nickname,
                              int as_advertised);
 void dirserv_test_reachability(int try_all);
 int authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,