Selaa lähdekoodia

Fix wildcarded address mappings from the control port

Apparently, we weren't actually detecting wildcardedness when parsing
them: whoops!

bug 6244.  Bugfix on 0.2.3.9-alpha
Nick Mathewson 11 vuotta sitten
vanhempi
commit
2ba52f4095
2 muutettua tiedostoa jossa 18 lisäystä ja 3 poistoa
  1. 6 0
      changes/bug6244_part_c
  2. 12 3
      src/or/control.c

+ 6 - 0
changes/bug6244_part_c

@@ -0,0 +1,6 @@
+  o Major bugfixes (controller):
+    - Make wildcarded addresses (that is, ones beginning with *.) work when
+      provided via the controller's MapAddress command.  Previously, they
+      were accepted, but we never actually noticed that they were wildcards.
+      Fix for bug 6244; bugfix on 0.2.3.9-alpha.
+

+ 12 - 3
src/or/control.c

@@ -1366,9 +1366,18 @@ handle_control_mapaddress(control_connection_t *conn, uint32_t len,
           smartlist_add_asprintf(reply, "250-%s=%s", address, to);
         }
       } else {
-        addressmap_register(from, tor_strdup(to), 1,
-                            ADDRMAPSRC_CONTROLLER, 0, 0);
-        smartlist_add_asprintf(reply, "250-%s", line);
+        const char *msg;
+        if (addressmap_register_auto(from, to, 1,
+                                     ADDRMAPSRC_CONTROLLER, &msg) < 0) {
+          smartlist_add_asprintf(reply,
+                                 "512-syntax error: invalid address mapping "
+                                 " '%s': %s", line, msg);
+          log_warn(LD_CONTROL,
+                   "Skipping invalid argument '%s' in MapAddress msg: %s",
+                   line, msg);
+        } else {
+          smartlist_add_asprintf(reply, "250-%s", line);
+        }
       }
     } else {
       smartlist_add_asprintf(reply, "512-syntax error: mapping '%s' is "