aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2023-07-12fallbackdir: Update list generated on July 12, 2023Tor CI Release
2023-07-12Update geoip files to match ipfire location db, 2023/07/12.Tor CI Release
2023-07-12Merge branch 'maint-0.4.7'David Goulet
2023-07-05replace L2 vanguards that aren't Fast or StableRoger Dingledine
Rotate to a new L2 vanguard whenever an existing one loses the Stable or Fast flag. Previously, we would leave these relays in the L2 vanguard list but never use them, and if all of our vanguards end up like this we wouldn't have any middle nodes left to choose from so we would fail to make onion-related circuits. Fixes bug 40805; bugfix on 0.4.7.1-alpha.
2023-07-05trivial typo fix in commentRoger Dingledine
2023-06-27Bug 40566: Remove unused BDP estimatorsMike Perry
2023-06-27Bug 40566: Remove unused congestion control alg structs.Mike Perry
2023-06-27Bug 40566: Unhook unused congestion control algsMike Perry
2023-06-27Bug 40566: Remove unused cc alg filesMike Perry
2023-06-23Add congestion control tests to build.Mike Perry
2023-06-23Add CWND test vectorsMike Perry
2023-06-23Add RTT Test VectorsMike Perry
2023-06-23Add clock heuristic test vector for congestion control.Mike Perry
2023-06-23Export variables and functions for CC unit tests.Mike Perry
2023-06-23Bug 40709: Update and clean up tests for consensus paramsMike Perry
2023-06-23Bug 40709: Update congestion control parametersMike Perry
This brings us into sync with the consensus, and will be useful for test vectors, to ensure behavior consistent with the consensus params.
2023-06-22Bug 40569: Reduce accepted range for negotiated cc_sendme_incMike Perry
2023-06-20Bug 40808: Change KISTSchedRunInterval range and default; add ↵Mike Perry
KISTSchedRunIntervalClient
2023-06-19Merge branch 'ticket40773' into 'main'David Goulet
Fix compilation error on older gcc versions and MSVC. See merge request tpo/core/tor!717
2023-06-19Change git.tpo URLs to gitlab.tpoDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-06-15Merge branch 'tor-gitlab/mr/722'David Goulet
2023-06-15Change git.tpo URLs to gitlab.tpoDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-06-15Bug 40811: Count conflux leg launch attempts early.Mike Perry
Also, double check that the consensus has enough overall exits before attempting conflux set launch.
2023-06-14Merge branch 'tor-gitlab/mr/721'David Goulet
2023-06-13Bug 40810: Avoid using 0 RTT legsMike Perry
2023-06-13Bug 40810: Improve validation checks to ignore 0-RTT legsMike Perry
Also add calls to dump the legs of a conflux set if we have too many
2023-06-13Merge branch 'tor-gitlab/mr/715'David Goulet
2023-06-09Bug 40801: Do not change read state of marked connsMike Perry
2023-06-09Bug 40801: Send LINKED_ACK before attaching streamsMike Perry
Otherwise, the BEGIN cell arrives at the exit before it has an RTT, and then it does not know which circuit to prefer in response.
2023-06-09Add BUG() macro to marked edge readsMike Perry
This will give us a full stacktrace.
2023-06-09Add conflux logs to diagnose cases where RTTs are absent/zero.Mike Perry
2023-06-07Fix the spacing in the 'Your Tor identity key fingerprint is' log line'Neel Chauhan
2023-06-06Add a conflux helper to log conflux sets.Mike Perry
2023-06-05More fixes for compile-time warnings in equix and hashxMicah Elizabeth Scott
This addresses issue #40800 and a couple other problems I noticed while trying to reproduce that one. The original issue is just a missing cast to void* on the args of __builtin___clear_cache(), and clang is picky about the implicit cast between what it considers to be char of different signedness. Original report is from MacOS but it's also reproducible on other clang targets. The cmake-based original build system for equix and hashx was a handy way to run tests, but it suffered from some warnings due to incorrect application of include_directories(). And lastly, there were some return codes from hashx_exec() that get ignored on equix when asserts are disabled. It bugged me too much to just silence this with a (void) cast, since even though this is in the realm of low-likelyhood programming errors and not true runtime errors, I don't want to make it easy for the hashx_exec() wrappers to return values that are dangerously wrong if an error is ignored. I made sure that even if asserts are disabled, we return values that will cause the solver and verifier to both fail to validate a potential solution. Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2023-06-05Fix compilation error on older gcc versions and MSVC.Gabriela Moldovan
This fixes an "initializer is not a constant" compilation error that manifests itself on gcc versions < 8.1 and MSVC (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69960#c18). Fixes bug #40773 Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-06-01fallbackdir: Update list generated on June 01, 2023Tor CI Release
2023-06-01Update geoip files to match ipfire location db, 2023/06/01.Tor CI Release
2023-06-01test: Really fix the mem leak from prior commitDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-06-01test: Fix a mem leak reported by CoverityDavid Goulet
Here is the report: *** CID 1531835: Resource leaks (RESOURCE_LEAK) /src/test/test_crypto_slow.c: 683 in test_crypto_equix() 677 678 /* Solve phase: Make sure the test vector matches */ 679 memset(&output, 0xa5, sizeof output); 680 equix_result result; 681 result = equix_solve(solve_ctx, challenge_literal, 682 challenge_len, &output); >>> CID 1531835: Resource leaks (RESOURCE_LEAK) >>> Variable "solve_ctx" going out of scope leaks the storage it points to. Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-05-31Merge branch 'maint-0.4.7'David Goulet
2023-05-31Merge branch 'tor-gitlab/mr/714' into maint-0.4.7David Goulet
2023-05-31Update CI builds to Debian Bullseye, fix associated compatibility bugsMicah Elizabeth Scott
This is a change intended for 0.4.7 maintenance as well as main. The CI builds use Debian Buster which is now end of life, and I was experiencing inconsistent CI failures with accessing its security update server. I wanted to update CI to a distro that isn't EOL, and Bullseye is the current stable release of Debian. This opened up a small can of worms that this commit also deals with. In particular there's a docker engine bug that we work around by removing the docker-specific apt cleanup script if it exists, and there's a new incompatibility between tracing and sandbox support. The tracing/sandbox incompatibility itself had two parts: - The membarrier() syscall is used to deliver inter-processor synchronization events, and the external "userspace-rcu" data structure library would make assumptions that if membarrier is available at initialization it always will be. This caused segfaults in some cases when running trace + sandbox. Resolved this by allowing membarrier entirely, in the sandbox. - userspace-rcu also assumes it can block signals, and fails hard if this can't be done. We already include a similar carveout to allow this in the sandbox for fragile-hardening, so I extended that to cover tracing as well. Addresses issue #40799 Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2023-05-31Merge branch 'tor-gitlab/mr/713'David Goulet
2023-05-29tls: Disable a warning with LibreSSL >= 3.8.0orbea
Skip a warning using EC_GFp_nist_method() which was removed in LibreSSL 3.8. Based on a patch from OpenBSD. https://github.com/openbsd/ports/commit/33fe251a08cb11f30ce6094a2e0759c3bb63ed16 These functions are deprecated since OpenSSL 3.0. https://www.openssl.org/docs/man3.1/man3/EC_GFp_nist_method.html
2023-05-28hs_pow: Add CompiledProofOfWorkHash torrc optionMicah Elizabeth Scott
This exposes the new fallback behavior in hashx via a new AUTOBOOL configuration option, available to both clients and services. The default should be fine for nearly everyone, but it might be necessary to enable or disable the compiler manually for diagnostic purposes. Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2023-05-28hs_pow: Update for equix API to fix issue 40794Micah Elizabeth Scott
This change adapts the hs_pow layer and unit tests to API changes in hashx and equix which modify the fault recovery responsibilities and reporting behaivor. This and the corresponding implementation changes in hashx and equix form the fix for #40794, both solving the segfault and giving hashx a way to report those failures up the call chain without them being mistaken for a different error (unusable seed) that would warrant a retry. To handle these new late compiler failures with a minimum of fuss or inefficiency, the failover is delegated to the internals of hashx and tor needs only pass in a EQUIX_CTX_TRY_COMPILE flag to get the behavior that tor was previously responsible for implementing. Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2023-05-28equix: API changes for new result codes and hashx compatibilityMicah Elizabeth Scott
This change adapts Equi-X to the corresponding HashX API changes that added HASHX_TRY_COMPILE. The new regularized HashX return codes are reflected by revised corresponding Equi-X return codes. Both solve and verify operations now return an error/success code, and a new equix_solutions_buffer struct includes both the solution buffer and information about the solution count and hashx implementation. With this change, it's possible to discern between hash construction failures (invalid seed) and some external error like an mprotect() failure. Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2023-05-28hashx: API changes to allow recovery from late compile failuresMicah Elizabeth Scott
This is an API breaking change to hashx, which modifies the error handling strategy. The main goal here is to allow unproblematic recovery from hashx_compile failures. hashx_alloc can no longer fail for reasons other than memory allocation. All platform-specific compile failures are now reported via hashx_make(), in order to both allow later failure and avoid requiring users of the API to maintain and test multiple failure paths. Note that late failures may be more common in actual use than early failures. Early failures represent architectures other than x86_64 and aarch64. Late failures could represent a number of system configurations where syscalls are restricted. The definition of a hashx context no longer tries to overlay storage for the different types of program, and instead allows one context to always contain an interpretable description of the program as well as an optional buffer for compiled code. The hashx_type enum is now used to mean either a specific type of hash function or a type of hashx context. You can allocate a context for use only with interpreted or compiled functions, or you can use HASHX_TRY_COMPILE to prefer the compiler with an automatic fallback on the interpreter. After calling hashx_make(), the new hashx_query_type() can be used if needed to determine which implementation was actually chosen. The error return types have been overhauled so that everyone uses the hashx_result enum, and seed failures vs compile failures are always clearly distinguishable. Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2023-05-28hashx: allow hashx_compile to fail, avoid segfault without changing APIMicah Elizabeth Scott
This is a minimal portion of the fix for tor issue #40794, in which hashx segfaults due to denial of mprotect() syscalls at runtime. Prior to this fix, hashx makes the assumption that if the JIT is supported on the current architecture, it will also be usable at runtime. This isn't true if mprotect fails on linux, which it may for various reasons: the tor built-in sandbox, the shadow simulator, or external security software that implements a syscall filter. The necessary error propagation was missing internally in hashx, causing us to obliviously call into code which was never made executable. With this fix, hashx_make() will instead fail by returning zero. A proper fix will require API changes so that callers can discern between different types of failures. Zero already means that a program couldn't be constructed, which requires a different response: choosing a different seed, vs switching implementations. Callers would also benefit from a way to use one context (with its already-built program) to run in either compiled or interpreted mode. Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2023-05-28hashx: minor, another logical operator changeMicah Elizabeth Scott
The code style in equix and hashx sometimes uses bitwise operators in place of logical ones in cases where it doesn't really matter either way. This sometimes annoys our static analyzer tools. Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>