Commit e05ddf3e authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Check for port config before addr config in client port options

Otherwise, we'll fail, since "9050" looks like a perfectly fine address.
parent 6fa99ab3
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -5039,6 +5039,12 @@ parse_client_port_config(smartlist_t *out,
        tor_free(addrtmp);
        goto err;
      }
    } else {
      /* Try parsing integer port before address, because, who knows?
         "9050" might be a valid address. */
      port = (int) tor_parse_long(addrport, 10, 0, 65535, &ok, NULL);
      if (ok) {
        tor_addr_from_str(&addr, defaultaddr);
      } else if (tor_addr_port_parse(addrport, &addr, &ptmp) == 0) {
        if (ptmp == 0) {
          log_warn(LD_CONFIG, "%sPort line has address but no port", portname);
@@ -5046,13 +5052,10 @@ parse_client_port_config(smartlist_t *out,
        }
        port = ptmp;
      } else {
      port = (int) tor_parse_long(addrport, 10, 0, 65535, &ok, NULL);
      if (!ok) {
        log_warn(LD_CONFIG, "Couldn't parse address '%s' for %sPort",
                 escaped(addrport), portname);
        goto err;
      }
      tor_addr_from_str(&addr, defaultaddr);
    }

    /* Now parse the rest of the options, if any. */