Skip to content
Snippets Groups Projects
  1. Dec 14, 2020
    • Nick Mathewson's avatar
      Socks5: handle truncated client requests correctly · c4fe66e3
      Nick Mathewson authored
      Previously, our code would send back an error if the socks5 request
      parser said anything but DONE.  But there are other non-error cases,
      like TRUNCATED: we shouldn't send back errors for them.
      
      This patch lowers the responsibility for setting the error message
      into the parsing code, since the actual type of the error message
      will depend on what problem was encountered.
      
      Fixes bug 40190; bugfix on 0.3.5.1-alpha.
      c4fe66e3
  2. Nov 12, 2020
  3. Nov 09, 2020
  4. Nov 05, 2020
  5. Oct 14, 2020
    • Nick Mathewson's avatar
      Implement proposal 318: Limit protovers to 0..63 · dd63b972
      Nick Mathewson authored
      In brief: we go through a lot of gymnastics to handle huge protover
      numbers, but after years of development we're not even close to 10
      for any of our current versions.  We also have a convenient
      workaround available in case we ever run out of protocols: if (for
      example) we someday need Link=64, we can just add Link2=0 or
      something.
      
      This patch is a minimal patch to change tor's behavior; it doesn't
      take advantage of the new restrictions.
      
      Implements #40133 and proposal 318.
      dd63b972
  6. Oct 07, 2020
    • David Goulet's avatar
      hs-v2: Add deprecation warning for service · b404f085
      David Goulet authored and Nick Mathewson's avatar Nick Mathewson committed
      
      If at least one service is configured as a version 2, a log warning is emitted
      once and only once.
      
      Closes #40003
      
      Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
      b404f085
    • Nick Mathewson's avatar
      Parallelize src/test/test into chunks. · c5ba8b62
      Nick Mathewson authored
      First, we introduce a flag to teach src/test/test to split its work
      into chunks.  Then we replace our invocation of src/test/test in our
      "make check" target with a set of 8 scripts that invoke the first
      8th of the tests, the second 8th, and so on.
      
      This change makes our "make -kj4 check" target in our hardened
      gitlab build more than twice as fast, since src/test/test was taking
      the longest to finish.
      
      Closes 40098.
      c5ba8b62
  7. Sep 22, 2020
  8. Sep 17, 2020
  9. Sep 01, 2020
    • David Goulet's avatar
      conn: Remove assert on new listener connection when retrying · ea339227
      David Goulet authored
      
      Opening a new listener connection can fail in many ways like a bind()
      permission denied on a low port for instance.
      
      And thus, we should expect to handle an error when creating a new one instead
      of assert() on it.
      
      To hit the removed assert:
      
        ORPort 80
        KeepBindCapabilities 0
      
      Start tor. Then edit torrc:
      
        ORPort <some-IP>:80
      
      HUP tor and the assert is hit.
      
      Fixes #40073
      
      Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
      ea339227
  10. Aug 12, 2020
  11. Aug 10, 2020
  12. Aug 06, 2020
  13. Aug 03, 2020
    • Nick Mathewson's avatar
      Remove channel_is_canonical_is_reliable() · 435f31ae
      Nick Mathewson authored
      This function once served to let circuits continue to be built over
      version-1 link connections.  But such connections are long-obsolete,
      and it's time to remove this check.
      
      Closes #40081.
      435f31ae
  14. Jul 30, 2020
  15. Jul 28, 2020
  16. Jul 24, 2020
  17. Jul 23, 2020
  18. Jul 22, 2020
    • Nick Mathewson's avatar
      Treat all extorport connections with un-set addresses as remote · ceb6585a
      Nick Mathewson authored
      Without this fix, if an PT forgets to send a USERADDR command, that
      results in a connection getting treated as local for the purposes of
      rate-limiting.
      
      If the PT _does_ use USERADDR, we still believe it.
      
      Closes ticket 33747.
      ceb6585a
    • Nick Mathewson's avatar
      Adjust the rules for warning about too many connections. · faa752f3
      Nick Mathewson authored
      Previously we tolerated up to 1.5 connections for every relay we
      were connected to, and didn't warn if we had fewer than 5
      connections total.
      
      Now we tolerate up to 1.5 connections per relay, and up to 4
      connections per authority, and we don't warn at all when we have
      fewer than 25 connections total.
      
      Fixes bug 33880, which seems to have been provoked by our #17592
      change in 0.3.5.
      faa752f3
  19. Jul 10, 2020
  20. Jul 09, 2020
  21. Jul 07, 2020
  22. Jul 06, 2020
    • Alexander Hansen Færøy's avatar
      Use ((x + 7) >> 3) instead of (x >> 3) when converting from bits to bytes. · 7b2d1070
      Alexander Hansen Færøy authored and Nick Mathewson's avatar Nick Mathewson committed
      This patch changes our bits-to-bytes conversion logic in the NSS
      implementation of `tor_tls_cert_matches_key()` from using (x >> 3) to
      ((x + 7) >> 3) since DER bit-strings are allowed to contain a number of
      bits that is not a multiple of 8.
      
      Additionally, we add a comment on why we cannot use the
      `DER_ConvertBitString()` macro from NSS, as we would potentially apply
      the bits-to-bytes conversion logic twice, which would lead to an
      insignificant amount of bytes being compared in
      `SECITEM_ItemsAreEqual()` and thus turn the logic into being a
      prefix match instead of a full match.
      
      The `DER_ConvertBitString()` macro is defined in NSS as:
      
          /*
          ** Macro to convert der decoded bit string into a decoded octet
          ** string. All it needs to do is fiddle with the length code.
          */
          #define DER_ConvertBitString(item)            \
              {                                         \
                  (item)->len = ((item)->len + 7) >> 3; \
              }
      
      Thanks to Taylor Yu for spotting this problem.
      
      This patch is part of the fix for TROVE-2020-001.
      
      See: https://bugs.torproject.org/33119
      7b2d1070
    • Alexander Hansen Færøy's avatar
      Add constness to length variables in `tor_tls_cert_matches_key`. · 06f1e959
      Alexander Hansen Færøy authored and Nick Mathewson's avatar Nick Mathewson committed
      We add constness to `peer_info_orig_len` and `cert_info_orig_len` in
      `tor_tls_cert_matches_key` to ensure that we don't accidentally alter
      the variables.
      
      This patch is part of the fix for TROVE-2020-001.
      
      See: https://bugs.torproject.org/33119
      06f1e959
    • Alexander Hansen Færøy's avatar
      Fix out-of-bound memory read in `tor_tls_cert_matches_key()` for NSS. · b46984e9
      Alexander Hansen Færøy authored and Nick Mathewson's avatar Nick Mathewson committed
      This patch fixes an out-of-bound memory read in
      `tor_tls_cert_matches_key()` when Tor is compiled to use Mozilla's NSS
      instead of OpenSSL.
      
      The NSS library stores some length fields in bits instead of bytes, but
      the comparison function found in `SECITEM_ItemsAreEqual()` needs the
      length to be encoded in bytes. This means that for a 140-byte,
      DER-encoded, SubjectPublicKeyInfo struct (with a 1024-bit RSA public key
      in it), we would ask `SECITEM_ItemsAreEqual()` to compare the first 1120
      bytes instead of 140 (140bytes * 8bits = 1120bits).
      
      This patch fixes the issue by converting from bits to bytes before
      calling `SECITEM_ItemsAreEqual()` and convert the `len`-fields back to
      bits before we leave the function.
      
      This patch is part of the fix for TROVE-2020-001.
      
      See: https://bugs.torproject.org/33119
      b46984e9
    • Alexander Hansen Færøy's avatar
      Run `tor_tls_cert_matches_key()` Test Suite with both OpenSSL and NSS. · 33e1c2e6
      Alexander Hansen Færøy authored and Nick Mathewson's avatar Nick Mathewson committed
      This patch lifts the `tor_tls_cert_matches_key()` tests out of the
      OpenSSL specific TLS test suite and moves it into the generic TLS test
      suite that is executed for both OpenSSL and NSS.
      
      This patch is largely a code movement, but we had to rewrite parts of
      the test to avoid using OpenSSL specific data-types (such as `X509 *`)
      and replace it with the generic Tor abstraction type
      (`tor_x509_cert_impl_t *`).
      
      This patch is part of the fix for TROVE-2020-001.
      
      See: https://bugs.torproject.org/33119
      33e1c2e6
  23. Jun 30, 2020
  24. May 30, 2020
    • Roger Dingledine's avatar
      Preemptive circs should work with UseEntryGuards 0 · 39f2411b
      Roger Dingledine authored
      Resume being willing to use preemptively-built circuits when
      UseEntryGuards is set to 0. We accidentally disabled this feature with
      that config setting (in our fix for #24469), leading to slower load times.
      
      Fixes bug 34303; bugfix on 0.3.3.2-alpha.
      39f2411b
  25. May 06, 2020
  26. Mar 20, 2020
Loading