summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-07-01 10:22:18 -0400
committerNick Mathewson <nickm@torproject.org>2018-07-01 10:22:18 -0400
commit9aeef05f8f56f16c9ff7e147ca313cc7bab88eda (patch)
tree8677487ad37a8987e807d0e4eb2b2cba029eae1e
parent72ee0b6f793949c4637c5878c51a39316f0b336e (diff)
parent3f8a12a63a5a1d8b4d40451586377423c95bda09 (diff)
downloadtor-9aeef05f8f56f16c9ff7e147ca313cc7bab88eda.tar.gz
tor-9aeef05f8f56f16c9ff7e147ca313cc7bab88eda.zip
Merge remote-tracking branch 'dgoulet/bug26523_033_01' into maint-0.3.3
-rw-r--r--changes/bug265235
-rw-r--r--src/or/control.c13
2 files changed, 14 insertions, 4 deletions
diff --git a/changes/bug26523 b/changes/bug26523
new file mode 100644
index 0000000000..a739d240e9
--- /dev/null
+++ b/changes/bug26523
@@ -0,0 +1,5 @@
+ o Minor bugfixes (hidden service, control port):
+ - The HSPOST command wasn't parsing properly the HSADDRESS= parameter and
+ thus not using it. It now handles it correctly. Fixes bug 26523; bugfix on
+ 0.3.3.1-alpha. Patch by "akwizgran".
+
diff --git a/src/or/control.c b/src/or/control.c
index 028339f498..06360586ee 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -4342,8 +4342,10 @@ handle_control_hspost(control_connection_t *conn,
smartlist_t *args = smartlist_new();
- /* If any SERVER= options were specified, try parse the options line */
- if (!strcasecmpstart(argline, opt_server)) {
+ /* If any SERVER= or HSADDRESS= options were specified, try to parse
+ * the options line. */
+ if (!strcasecmpstart(argline, opt_server) ||
+ !strcasecmpstart(argline, opt_hsaddress)) {
/* encoded_desc begins after a newline character */
cp = cp + 1;
encoded_desc = cp;
@@ -4366,11 +4368,12 @@ handle_control_hspost(control_connection_t *conn,
hs_dirs = smartlist_new();
smartlist_add(hs_dirs, node->rs);
} else if (!strcasecmpstart(arg, opt_hsaddress)) {
- if (!hs_address_is_valid(arg)) {
+ const char *address = arg + strlen(opt_hsaddress);
+ if (!hs_address_is_valid(address)) {
connection_printf_to_buf(conn, "512 Malformed onion address\r\n");
goto done;
}
- onion_address = arg;
+ onion_address = address;
} else {
connection_printf_to_buf(conn, "512 Unexpected argument \"%s\"\r\n",
arg);
@@ -4385,6 +4388,8 @@ handle_control_hspost(control_connection_t *conn,
read_escaped_data(encoded_desc, encoded_desc_len, &desc_str);
if (hs_control_hspost_command(desc_str, onion_address, hs_dirs) < 0) {
connection_printf_to_buf(conn, "554 Invalid descriptor\r\n");
+ } else {
+ send_control_done(conn);
}
tor_free(desc_str);
goto done;