- Dec 14, 2020
-
-
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.
-
- Nov 12, 2020
-
-
Nick Mathewson authored
-
- Nov 09, 2020
-
-
Nick Mathewson authored
-
- Nov 05, 2020
-
-
Nick Mathewson authored
Previously, hashlib.shake_256 was a class (if present); now it can also be a function. This change invalidated our old compatibility/workaround code, and made one of our tests fail. Fixes bug 40179; bugfix on 0.3.1.6-rc when the workaround code was added.
-
- Oct 14, 2020
-
-
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.
-
- Oct 07, 2020
-
-
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 <dgoulet@torproject.org>
-
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.
-
- Sep 22, 2020
-
-
David Goulet authored
Fixes #40135 Signed-off-by:
David Goulet <dgoulet@torproject.org>
-
- Sep 17, 2020
-
-
Nick Mathewson authored
We already fixed these in #40099 and #40125. This patch fixes #40126. Bugfix on 0.2.8.1-alpha.
-
David Goulet authored
The rend_cache/entry_free was missing the rend cache allocation increment before freeing the object. Without it, it had an underflow bug: Sep 17 08:40:13.845 [warn] rend_cache_decrement_allocation(): Bug: Underflow in rend_cache_decrement_allocation (on Tor 0.4.5.0-alpha-dev 7eef9ced) Fixes #40125 Signed-off-by:
David Goulet <dgoulet@torproject.org>
-
- Sep 01, 2020
-
-
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 <dgoulet@torproject.org>
-
- Aug 12, 2020
-
-
Nick Mathewson authored
Without this fix, running this test on its own would fail. Fixes bug 40099. Bugfix on ade50058 in 0.2.8.1-alpha.
-
- Aug 10, 2020
-
-
Nick Mathewson authored
-
- Aug 06, 2020
-
-
Nick Mathewson authored
Fixes bug 40080. Bugfix on 0.2.7.2-alpha.
-
- Aug 03, 2020
-
-
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.
-
- Jul 30, 2020
-
-
Nick Mathewson authored
We found this in #40076, after we started using buf_move_all() in more places. Fixes bug #40076; bugfix on 0.3.3.1-alpha. As far as I know, the crash only affects master, but I think this warrants a backport, "just in case".
-
Nick Mathewson authored
The failing case is #if'd out for now, but will be fixed in the next commit. Testing for a fix for #40076.
-
- Jul 28, 2020
-
-
Nick Mathewson authored
Fixes bug 31036; bugfix on 0.2.1.8-alpha when we moved the logging system to use posix fds.
-
- Jul 24, 2020
-
-
David Goulet authored
They are about to be shutdown in September. Signed-off-by:
David Goulet <dgoulet@torproject.org>
-
- Jul 23, 2020
-
-
Closes #40061 Signed-off-by:
David Goulet <dgoulet@torproject.org>
-
- Jul 22, 2020
-
-
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.
-
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.
-
- Jul 10, 2020
-
-
Nick Mathewson authored
Closes ticket 40035.
-
- Jul 09, 2020
-
-
Nick Mathewson authored
-
Nick Mathewson authored
-
- Jul 07, 2020
-
-
Nick Mathewson authored
This warning only affects platforms (like win32) with 32-bit time_t. Fixes bug 40028; bugfix on 0.3.2.8-rc.
-
- Jul 06, 2020
-
-
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
-
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
-
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
-
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
-
- Jun 30, 2020
-
-
Nick Mathewson authored
This is not actually a bug! It can happen for a bunch of reasons, which all boil down to "trying to add an extrainfo for which we no longer have the corresponding routerinfo". Fixes #16016; bugfix on 0.2.6.3-alpha.
-
- May 30, 2020
-
-
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.
-
- May 06, 2020
-
-
Nick Mathewson authored
GCC added an implicit-fallthrough warning a while back, where it would complain if you had a nontrivial "case:" block that didn't end with break, return, or something like that. Clang recently added the same thing. GCC, however, would let you annotate a fall-through as intended by any of various magic "/* fall through */" comments. Clang, however, only seems to like "__attribute__((fallthrough))". Fortunately, GCC accepts that too. A previous commit in this branch defined a FALLTHROUGH macro to do the right thing if GNUC is defined; here we replace all of our "fall through" comments with uses of that macro. This is an automated commit, made with the following perl one-liner: #!/usr/bin/perl -i -p s#/\* *falls? ?thr.*?\*/#FALLTHROUGH;#i;
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
This macro defers to __attribute__((fallthrough)) on GCC (and clang). Previously we had been using GCC's magic /* fallthrough */ comments, but clang very sensibly doesn't accept those. Since not all compiler recognize it, we only define it when our configure script detects that it works. Part of a fix for 34078.
-
- Mar 20, 2020
-
-