summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-06-11Add .editorconfig to follow coding standards stylejuga0
2018-06-02Merge remote-tracking branch 'rl1987/doc25237'Nick Mathewson
2018-06-02Merge branch 'maint-0.3.3'Nick Mathewson
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-06-02Merge branch 'bug25939_034_01_squashed'Nick Mathewson
2018-06-02hs-v3: Build onion address before registering ephemeral serviceDavid Goulet
With the work on #25500 (reducing CPU client usage), the HS service main loop callback is enabled as soon as the HS service map changes which happens when registering a new service. Unfortunately, for an ephemeral service, we were building the onion address *after* the registration leading to the "service->onion_address` to be an empty string. This broke the "HS_DESC CREATED" event which had no onion address in it. And also, we were logging an empty onion address for that service. Fixes #25939 Signed-off-by: David Goulet <dgoulet@torproject.org>
2018-06-02Point reader to a section in tor-spec.txtrl1987
2018-05-30Fix various typosNick Mathewson
2018-05-27Merge branch 'maint-0.3.3'Nick Mathewson
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.3'Nick Mathewson
2018-05-24Merge branch 'maint-0.3.2' into maint-0.3.3Nick Mathewson
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 '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-23Merge branch 'appveyor_min_034_v2'Nick Mathewson
2018-05-23Merge branch 'bug26156_034'Nick Mathewson
2018-05-22Update version to 0.3.3.6-devNick Mathewson
2018-05-22remove the now-duplicate 0.3.3.6 stanzasRoger Dingledine
2018-05-22copy changelog and releasenotes from 0.3.3.6Nick Mathewson
2018-05-22Merge branch 'maint-0.3.3'Nick Mathewson
"ours" merge to avoid version bump.
2018-05-22forward-port all those changelog changesRoger Dingledine
2018-05-22reorder 0.3.3.3-alpha changelogRoger Dingledine
(it came out before 0.3.2.10, because 0.3.2.10 has backports from it)
2018-05-22Merge branch 'maint-0.3.3'Nick 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-22Merge branch 'maint-0.3.3'Nick Mathewson
2018-05-22Make the TROVE-2018-005 fix work with rust.Nick Mathewson
2018-05-22Merge branch 'maint-0.3.3'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-22Merge branch 'maint-0.3.3'Nick Mathewson
"ours" merge to avoid version bump
2018-05-22version bump to 0.3.3.6Nick Mathewson
2018-05-22Merge branch 'trove-2018-005_034'Nick Mathewson
2018-05-22Merge branch 'maint-0.3.3'Nick Mathewson
"Ours" merge to avoid the maint-0.3.3 version of the TROVE-2018-005 fix, which touches the files in their old locations.
2018-05-22fix wide linesNick Mathewson
2018-05-22changes file for TROVE-2018-005Nick Mathewson
2018-05-22vote: TROVE-2018-005 Make DirAuths omit misbehaving routers from their vote.Isis Lovecruft
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-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
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-22changes file for TROVE-2018-005Nick 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
2018-05-22Add a missing include to get the declaration of OPENSSL_1_1_APINick Mathewson
Apparently, even though I had tested on OpenSSL 1.1.1 with no-deprecated, OpenSSL 1.1.0 is different enough that I should have tested with that as well. Fixes bug 26156; bugfix on 0.3.4.1-alpha where we first declared support for this configuration.