summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2018-11-02Merge remote-tracking branch 'dgoulet/ticket27410_032_01' into maint-0.3.3Nick Mathewson
2018-10-31Merge branch 'maint-0.2.9' into maint-0.3.3Nick Mathewson
2018-10-31Merge remote-tracking branch 'tor-github/pr/436' into maint-0.2.9Nick Mathewson
2018-10-30Merge remote-tracking branch 'tor-github/pr/346' into maint-0.3.3Nick Mathewson
2018-10-25Merge branch 'bug28202_029' into bug28202_033Nick Mathewson
2018-10-25Fix two other cases of (buf + N > end) patternNick Mathewson
Related to fix for 28202.
2018-10-25Fix possible UB in an end-of-string check in get_next_token().Nick Mathewson
Remember, you can't check to see if there are N bytes left in a buffer by doing (buf + N < end), since the buf + N computation might take you off the end of the buffer and result in undefined behavior. Fixes 28202; bugfix on 0.2.0.3-alpha.
2018-10-23Remove a now-unused rust "use".Nick Mathewson
2018-10-23Merge remote-tracking branch 'onionk/rust-allsupportednull1' into maint-0.3.3Nick Mathewson
2018-10-23Treat backtrace test failures as expected on most BSD-derived systemsteor
Treat backtrace test failures as expected on NetBSD, OpenBSD, and macOS/Darwin, until we solve bug 17808. (FreeBSD failures have been treated as expected since 18204 in 0.2.8.) Fixes bug 27948; bugfix on 0.2.5.2-alpha.
2018-10-17Log more info for duplicate ed25519 IDsTaylor Yu
Occasionally, key pinning doesn't catch a relay that shares an ed25519 ID with another relay. Log the identity fingerprints and the shared ed25519 ID when this happens, instead of making a BUG() warning. Fixes bug 27800; bugfix on 0.3.2.1-alpha.
2018-10-15Fix another tor_assert(0) caseNick Mathewson
2018-10-15Merge branch 'maint-0.2.9' into maint-0.3.3Nick Mathewson
2018-10-15Fix make check-spaces.Nick Mathewson
2018-10-15Adjust tor_assert_unreached()Nick Mathewson
This version of the macro makes it obvious to the compiler that "tor_assert_unreached()" will always abort().
2018-10-15Merge branch 'maint-0.2.9' into maint-0.3.3Nick Mathewson
2018-10-15Merge branch 'bug27709_029' into maint-0.2.9Nick Mathewson
2018-10-15Explain a bit more about branch prediction in the unit-test caseNick Mathewson
2018-10-10Merge branch 'maint-0.2.9' into maint-0.3.3Nick Mathewson
2018-10-10Update geoip and geoip6 to the October 9 2018 database.Karsten Loesing
2018-09-21Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-09-21Merge branch 'maint-0.2.9' into maint-0.3.2maint-0.3.2Nick Mathewson
2018-09-21rust/protover: return C-allocated string in protover_all_supported()cypherpunks
The result of CString::into_raw() is not safe to free with free() except under finicky and fragile circumstances that we definitely don't meet right now. This was missed in be583a34a3815c2c10e86094ab0610e4b7f9c869.
2018-09-21rust/protover: fix null deref in protover_all_supported()cypherpunks
Fortunately with the current callers it couldn't happen in practice. Fix on d1820c1516a31a149fc51a9e5126bf899e4c4e08.
2018-09-20hs-v3: Close all SOCKS request on descriptor failureDavid Goulet
Client side, when a descriptor is finally fetched and stored in the cache, we then go over all pending SOCKS request for that descriptor. If it turns out that the intro points are unusable, we close the first SOCKS request but not the others for the same .onion. This commit makes it that we'll close all SOCKS requests so we don't let hanging the other ones. It also fixes another bug which is having a SOCKS connection in RENDDESC_WAIT state but with a descriptor in the cache. At some point, tor will expire the intro failure cache which will make that descriptor usable again. When retrying all SOCKS connection (retry_all_socks_conn_waiting_for_desc()), we won't end up in the code path where we have already the descriptor for a pending request causing a BUG(). Bottom line is that we should never have pending requests (waiting for a descriptor) with that descriptor in the cache (even if unusable). Fixees #27410. Signed-off-by: David Goulet <dgoulet@torproject.org>
2018-09-18Merge remote-tracking branch 'onionk/rust-allsupported1' into maint-0.3.3Nick Mathewson
2018-09-17Remove extraneous argument from Rust protover_compute_vote()Nick Mathewson
This argument was added to match an older idea for the C api, but we decided not to do it that way in C. Fixes bug 27741; bugfix on 0.3.3.6 / TROVE-2018-005 fix.
2018-09-14Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-09-14hs-v3: Don't BUG() on directory permission check failureDavid Goulet
In hs_config.c, we do validate the permission of the hidden service directory but we do not try to create it. So, in the event that the directory doesn't exists, we end up in the loading key code path which checks for the permission and possibly creates the directory. On failure, don't BUG() since there is a perfectly valid use case for that function to fail. Fixes #27335 Signed-off-by: David Goulet <dgoulet@torproject.org>
2018-09-14Revise our assertion and bug macros to work with -WparenthesesNick Mathewson
On GCC and Clang, there's a feature to warn you about bad conditionals like "if (a = b)", which should be "if (a == b)". However, they don't warn you if there are extra parentheses around "a = b". Unfortunately, the tor_assert() macro and all of its kin have been passing their inputs through stuff like PREDICT_UNLIKELY(expr) or PREDICT_UNLIKELY(!(expr)), both of which expand to stuff with more parentheses around "expr", thus suppressing these warnings. To fix this, this patch introduces new macros that do not wrap expr. They're only used when GCC or Clang is enabled (both define __GNUC__), since they require GCC's "({statement expression})" syntax extension. They're only used when we're building the unit-test variant of the object files, since they suppress the branch-prediction hints. I've confirmed that tor_assert(), tor_assert_nonfatal(), tor_assert_nonfatal_once(), BUG(), and IF_BUG_ONCE() all now give compiler warnings when their argument is an assignment expression. Fixes bug 27709. Bugfix on 0.0.6, where we first introduced the "tor_assert()" macro.
2018-09-14rust/protover: delete ProtoSet::retaincypherpunks
As the comment noted, it was horribly inefficient.
2018-09-14rust/protover: use .and_not_in() instead of .retain() in all_supported()cypherpunks
.retain() would allocating a Vec of billions of integers and check them one at a time to separate the supported versions from the unsupported. This leads to a memory DoS. Closes ticket 27206. Bugfix on e6625113c98c281b0a649598d7daa347c28915e9.
2018-09-14rust/protover: add ProtoSet::and_not_in()cypherpunks
This is a way more efficient version of retain().
2018-09-14If options_act() fails, restore the previous value of global_optionsNick Mathewson
Before 0.3.3.1-alpha, we would exit() in this case immediately. But now that we leave tor_main() more conventionally, we need to make sure we restore things so as not to cause a double free. Fixes bug 27708; bugfix on 0.3.3.1-alpha.
2018-09-14protover: reject invalid protocol namescypherpunks
The spec only allows the characters [A-Za-z0-9-]. Fix on b2b2e1c7f24d9b65059e3d089768d6c49ba4f58f. Fixes #27316; bugfix on 0.2.9.4-alpha.
2018-09-13rust/protover: validate unknown protocol names use only allowed characterscypherpunks
2018-09-13Merge branch 'maint-0.2.9' into maint-0.3.2Nick Mathewson
2018-09-13Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-09-12Check waitpid return value and exit status in tinytest.cNick Mathewson
It's possible for a unit test to report success via its pipe, but to fail as it tries to clean up and exit. Notably, this happens on a leak sanitizer failure. Fixes bug 27658; bugfix on 0.2.2.4-alpha when tinytest was introduced.
2018-09-12rust/protover: fix check for overlapping rangescypherpunks
Closes ticket 27649. Bugfix on e6625113c98c281b0a649598d7daa347c28915e9.
2018-09-12rust/protover: remove version zero from testscypherpunks
This isn't legal according to dir-spec.txt. We can write separate tests for it if the spec is changed to make it legal.
2018-09-12test/protover: remove version zero from testscypherpunks
This isn't legal according to dir-spec.txt. We can write separate tests for it if the spec is changed to make it legal.
2018-09-11Bug 25505: Check circuitmux queues before padding.Mike Perry
2018-09-11Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-09-11Merge branch 'maint-0.2.9' into maint-0.3.2Nick Mathewson
2018-09-11Update geoip and geoip6 to the September 6 2018 database.Karsten Loesing
2018-09-10Bump to 0.3.3.10-dev.Nick Mathewson
2018-09-10Bump to 0.3.2.12-devNick Mathewson
2018-09-10Bump to 0.2.9.17-devNick Mathewson
2018-09-07Bump to 0.3.3.10Nick Mathewson