Browse Source

Move logging of bad hostnames into parse_extended_hostname

This fixes bug 3325, where a bad .exit would get logged as a bad .onion
Nick Mathewson 12 years ago
parent
commit
2cddd1d69f
2 changed files with 11 additions and 2 deletions
  1. 3 0
      changes/bug3325
  2. 8 2
      src/or/connection_edge.c

+ 3 - 0
changes/bug3325

@@ -0,0 +1,3 @@
+  o Minor bugfixes:
+    - When logging about a disallowed .exit name, do not also call it
+      an "invalid onion address". Fixes bug 3325; bugfix on 0.2.2.9-alpha.

+ 8 - 2
src/or/connection_edge.c

@@ -1894,8 +1894,6 @@ connection_ap_handshake_rewrite_and_attach(entry_connection_t *conn,
                          remapped_to_exit || options->AllowDotExit);
 
   if (addresstype == BAD_HOSTNAME) {
-    log_warn(LD_APP, "Invalid onion hostname %s; rejecting",
-             safe_str_client(socks->address));
     control_event_client_status(LOG_WARN, "SOCKS_BAD_HOSTNAME HOSTNAME=%s",
                                 escaped(socks->address));
     connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL);
@@ -3410,9 +3408,15 @@ connection_ap_can_use_exit(const entry_connection_t *conn, const node_t *exit)
 /** If address is of the form "y.onion" with a well-formed handle y:
  *     Put a NUL after y, lower-case it, and return ONION_HOSTNAME.
  *
+ * If address is of the form "y.onion" with a badly-formed handle y:
+ *     Return BAD_HOSTNAME and log a message.
+ *
  * If address is of the form "y.exit" and <b>allowdotexit</b> is true:
  *     Put a NUL after y and return EXIT_HOSTNAME.
  *
+ * If address is of the form "y.exit" and <b>allowdotexit</b> is false:
+ *     Return BAD_HOSTNAME and log a message.
+ *
  * Otherwise:
  *     Return NORMAL_HOSTNAME and change nothing.
  */
@@ -3451,6 +3455,8 @@ parse_extended_hostname(char *address, int allowdotexit)
  failed:
     /* otherwise, return to previous state and return 0 */
     *s = '.';
+    log_warn(LD_APP, "Invalid onion hostname %s; rejecting",
+             safe_str_client(address));
     return BAD_HOSTNAME;
 }