aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2021-09-30 10:59:24 -0400
committerDavid Goulet <dgoulet@torproject.org>2021-09-30 11:18:08 -0400
commitef7a64e3b874231f6793b563ea36b512ba072c5b (patch)
tree161314e2af9c579555ff6f1056444c8801d3e264
parent59bae7cbee7eeb262b6a86b24efb4536212862cc (diff)
downloadtor-ef7a64e3b874231f6793b563ea36b512ba072c5b.tar.gz
tor-ef7a64e3b874231f6793b563ea36b512ba072c5b.zip
hs-v2: Disable version 2 HSPOST and HSFETCH command
Part of #40476 Signed-off-by: David Goulet <dgoulet@torproject.org>
-rw-r--r--src/feature/control/control.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/src/feature/control/control.c b/src/feature/control/control.c
index 8185218a9f..c873d59f5e 100644
--- a/src/feature/control/control.c
+++ b/src/feature/control/control.c
@@ -4406,12 +4406,10 @@ handle_control_hsfetch(control_connection_t *conn, uint32_t len,
const char *body)
{
int i;
- char digest[DIGEST_LEN], *hsaddress = NULL, *arg1 = NULL, *desc_id = NULL;
+ char *hsaddress = NULL, *arg1 = NULL, *desc_id = NULL;
smartlist_t *args = NULL, *hsdirs = NULL;
(void) len; /* body is nul-terminated; it's safe to ignore the length */
static const char *hsfetch_command = "HSFETCH";
- static const char *v2_str = "v2-";
- const size_t v2_str_len = strlen(v2_str);
rend_data_t *rend_query = NULL;
/* Make sure we have at least one argument, the HSAddress. */
@@ -4422,21 +4420,13 @@ handle_control_hsfetch(control_connection_t *conn, uint32_t len,
/* Extract the first argument (either HSAddress or DescID). */
arg1 = smartlist_get(args, 0);
- /* Test if it's an HS address without the .onion part. */
- if (rend_valid_v2_service_id(arg1)) {
- hsaddress = arg1;
- } else if (strcmpstart(arg1, v2_str) == 0 &&
- rend_valid_descriptor_id(arg1 + v2_str_len) &&
- base32_decode(digest, sizeof(digest), arg1 + v2_str_len,
- REND_DESC_ID_V2_LEN_BASE32) == 0) {
- /* We have a well formed version 2 descriptor ID. Keep the decoded value
- * of the id. */
- desc_id = digest;
- } else {
- connection_printf_to_buf(conn, "513 Invalid argument \"%s\"\r\n",
- arg1);
- goto done;
- }
+
+ /* We no longer support version 2 on the network and so immediately return an
+ * error. We do this in order to not remove the code so to minimize the merge
+ * forward conflicts. */
+ connection_printf_to_buf(conn, "513 Invalid argument \"%s\"\r\n",
+ arg1);
+ goto done;
static const char *opt_server = "SERVER=";
@@ -4575,9 +4565,13 @@ handle_control_hspost(control_connection_t *conn,
send_control_done(conn);
}
tor_free(desc_str);
- goto done;
}
+ /* As for HSFETCH, we no longer support v2 on the network and so we stop
+ * right now. Code is not removed in order to minimize the merge forward
+ * conflicts. */
+ goto done;
+
/* From this point on, it is only v2. */
/* Read the dot encoded descriptor, and parse it. */