Commit ca9a5390 authored by Alexander Hansen Færøy's avatar Alexander Hansen Færøy 💬
Browse files

Don't escape the bridge distribution value.

We already check if there are invalid values in
check_bridge_distribution_setting() and reject the value if that is the
case. We can therefore only have strings of [A-Z] | [a-z] | [0-9] | '-'
| '_' here which is according to the directory specification.

See: https://bugs.torproject.org/32753
parent 399ec313
Loading
Loading
Loading
Loading

changes/bug32753

0 → 100644
+3 −0
Original line number Diff line number Diff line
  o Minor bugfixes (bridges):
    - Lowercase the value of BridgeDistribution from torrc before adding it to
      the descriptor. Fixes bug 32753; bugfix on 0.3.2.3-alpha.
+1 −2
Original line number Diff line number Diff line
@@ -2920,8 +2920,7 @@ router_dump_router_to_string(routerinfo_t *router,
    // forwarding what the user wrote in their torrc directly.
    tor_strlower(bd);

    smartlist_add_asprintf(chunks, "bridge-distribution-request %s\n",
                           escaped(bd));
    smartlist_add_asprintf(chunks, "bridge-distribution-request %s\n", bd);
    tor_free(bd);
  }

+19 −3
Original line number Diff line number Diff line
@@ -5711,11 +5711,27 @@ test_config_check_bridge_distribution_setting_not_a_bridge(void *arg)
static void
test_config_check_bridge_distribution_setting_valid(void *arg)
{
  int ret = check_bridge_distribution_setting("https");

  (void)arg;

  tt_int_op(ret, OP_EQ, 0);
  // Check all the possible values we support right now.
  tt_int_op(check_bridge_distribution_setting("none"), OP_EQ, 0);
  tt_int_op(check_bridge_distribution_setting("any"), OP_EQ, 0);
  tt_int_op(check_bridge_distribution_setting("https"), OP_EQ, 0);
  tt_int_op(check_bridge_distribution_setting("email"), OP_EQ, 0);
  tt_int_op(check_bridge_distribution_setting("moat"), OP_EQ, 0);

  // Check all the possible values we support right now with weird casing.
  tt_int_op(check_bridge_distribution_setting("NoNe"), OP_EQ, 0);
  tt_int_op(check_bridge_distribution_setting("anY"), OP_EQ, 0);
  tt_int_op(check_bridge_distribution_setting("hTTps"), OP_EQ, 0);
  tt_int_op(check_bridge_distribution_setting("emAIl"), OP_EQ, 0);
  tt_int_op(check_bridge_distribution_setting("moAt"), OP_EQ, 0);

  // Invalid values.
  tt_int_op(check_bridge_distribution_setting("x\rx"), OP_EQ, -1);
  tt_int_op(check_bridge_distribution_setting("x\nx"), OP_EQ, -1);
  tt_int_op(check_bridge_distribution_setting("\t\t\t"), OP_EQ, -1);

 done:
  return;
}