summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2018-06-20fix memory leak in protover.cRoger Dingledine
Fix a memory leak where directory authorities would leak a chunk of memory for every router descriptor every time they considered voting. This bug was taking down directory authorities in the live network due to out-of-memory issues. Fixes bug 26435; bugfix on 0.3.3.6.
2018-06-16Fix a bug in my fix for #26258Nick Mathewson
The fix here is use a different bourne shell subsitution for CARGO_ONLINE, so that an empty string counts as set.
2018-06-14Merge remote-tracking branch 'public/bug26258_033' into maint-0.3.3Nick Mathewson
2018-06-13squash! Make sure that the test_rust.sh script fails when a test failsNick Mathewson
Also make sure that we're actually running the test from within the right cwd, like we do when we're building. This seems necessary to avoid an error when running offline. Amusingly, it appears that we had this bug before: we just weren't noticing it, because of bug 26258.
2018-06-13Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-06-13Merge branch 'maint-0.3.1' into maint-0.3.2Nick Mathewson
2018-06-13Merge branch 'bug26158_031' into maint-0.3.1Nick Mathewson
2018-06-13Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-06-13Merge branch 'bug25686_diagnostic_032' into maint-0.3.2Nick Mathewson
2018-06-12bump to 0.3.3.7-devNick Mathewson
2018-06-12Merge branch 'maint-0.2.9' into maint-0.3.1Nick Mathewson
2018-06-12Merge branch 'maint-0.3.1' into maint-0.3.2Nick Mathewson
2018-06-12Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-06-12Add IPv6 orport address for dannenberg.Linus Nordberg
2018-06-12Bump to 0.3.3.7Nick Mathewson
2018-06-12Merge branch 'maint-0.3.1' into maint-0.3.2Nick Mathewson
2018-06-12Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-06-12Merge remote-tracking branch 'teor/bug26272-031' into maint-0.3.1Nick Mathewson
2018-06-12Merge branch 'maint-0.3.1' into maint-0.3.2Nick Mathewson
2018-06-12Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-06-12Merge branch 'maint-0.2.9' into maint-0.3.1Nick Mathewson
2018-06-11Several attempts to diagnose ticket 25686Nick Mathewson
There are a few reasons that relays might be uploading desciptors without saying X-Desc-Gen-Reason: 1. They are running an old version of our software, before 0.3.2.stable. 2. They are not running our software, but they are claiming they are. 3. They are uploading through a proxy that strips X-Desc-Gen-Reason. 4. They somehow had a bug in their software. According to the 25686 data, 1 is the most common reason. This ticket is an attempt to diagnose case 4, or prove that case 4 doesn't actually happen.
2018-06-11Update geoip and geoip6 to the June 7 2018 database.Karsten Loesing
2018-06-08Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-06-08Merge branch 'maint-0.3.1' into maint-0.3.2Nick Mathewson
2018-06-08Merge branch 'maint-0.2.9' into maint-0.3.1Nick Mathewson
2018-06-08Avoid out-of-bounds smartlist access in protover_compute_vote()rl1987
and contract_protocol_list()
2018-06-02Silence unused-const-variable warnings in zstd.h on some gcc versionsteor
Fixes bug 26272; bugfix on 0.3.1.1-alpha.
2018-06-02Merge branch 'bug26121-033-squashed' into maint-0.3.3Nick Mathewson
2018-06-02Bug 26121: Improve BUILDTIMEOUT_SET accuracy.Mike Perry
We were miscounting the total number of circuits for the TIMEOUT_RATE and CLOSE_RATE fields of this event.
2018-05-31Make sure that the test_rust.sh script fails when a test failsNick Mathewson
Exit codes from find(1) seem not to be so reliable as we had hoped. Closes ticket 26258; bugfix on 0.3.3.4-alpha when we fixed #25560
2018-05-27Merge remote-tracking branch 'public/bug25691_033_again_squashed' into ↵Nick Mathewson
maint-0.3.3
2018-05-24Merge branch 'maint-0.3.1' into maint-0.3.2Nick Mathewson
2018-05-24Merge branch 'maint-0.2.9' into maint-0.3.1Nick Mathewson
2018-05-24Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
2018-05-24Merge branch 'bug26116_033' into maint-0.3.3Nick Mathewson
2018-05-24Merge branch 'bug26116_029' into maint-0.2.9Nick Mathewson
2018-05-24Add a unit test for PEM-encrypted documents.Nick Mathewson
2018-05-22Update version to 0.3.3.6-devNick Mathewson
2018-05-22Merge branch 'trove-2018-005_032' into maint-0.3.3Nick Mathewson
2018-05-22avoid a signed/unsigned comparison.Nick Mathewson
2018-05-22Make the TROVE-2018-005 fix work with rust.Nick Mathewson
2018-05-22Merge branch 'trove-2018-005_032' into maint-0.3.3Nick Mathewson
2018-05-22uint breaks compilation on windowsNick Mathewson
2018-05-22version bump to 0.3.3.6Nick Mathewson
2018-05-22rust: Mirror TROVE-2018-005 fix in Rust protover implementation.Isis Lovecruft
* REFACTORS `UnvalidatedProtoEntry::from_str` to place the bulk of the splitting/parsing logic in to a new `UnvalidatedProtoEntry::parse_protocol_and_version_str()` method (so that both `from_str()` and `from_str_any_len()` can call it.) * ADD a new `UnvalidatedProtoEntry::from_str_any_len()` method in order to maintain compatibility with consensus methods older than 29. * ADD a limit on the number of characters in a protocol name. * FIXES part of #25517: https://bugs.torproject.org/25517
2018-05-22Merge branch 'trove-2018-005_032' into trove-2018-005_033Nick Mathewson
2018-05-22Add stdbool to protover.h. Only needed for the 032 backportNick Mathewson
2018-05-22vote: TROVE-2018-005 Make DirAuths omit misbehaving routers from their vote.Isis Lovecruft
2018-05-22protover: TROVE-2018-005 Fix potential DoS in protover protocol parsing.Isis Lovecruft
In protover.c, the `expand_protocol_list()` function expands a `smartlist_t` of `proto_entry_t`s to their protocol name concatenated with each version number. For example, given a `proto_entry_t` like so: proto_entry_t *proto = tor_malloc(sizeof(proto_entry_t)); proto_range_t *range = tor_malloc_zero(sizeof(proto_range_t)); proto->name = tor_strdup("DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa"); proto->ranges = smartlist_new(); range->low = 1; range->high = 65536; smartlist_add(proto->ranges, range); (Where `[19KB]` is roughly 19KB of `"a"` bytes.) This would expand in `expand_protocol_list()` to a `smartlist_t` containing 65536 copies of the string, e.g.: "DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa=1" "DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa=2" […] "DoSaaaaaaaaaaaaaaaaaaaaaa[19KB]aaa=65535" Thus constituting a potential resource exhaustion attack. The Rust implementation is not subject to this attack, because it instead expands the above string into a `HashMap<String, HashSet<u32>` prior to #24031, and a `HashMap<UnvalidatedProtocol, ProtoSet>` after). Neither Rust version is subject to this attack, because it only stores the `String` once per protocol. (Although a related, but apparently of too minor impact to be usable, DoS bug has been fixed in #24031. [0]) [0]: https://bugs.torproject.org/24031 * ADDS hard limit on protocol name lengths in protover.c and checks in parse_single_entry() and expand_protocol_list(). * ADDS tests to ensure the bug is caught. * FIXES #25517: https://bugs.torproject.org/25517