]> git.ipfire.org Git - thirdparty/tor.git/log
thirdparty/tor.git
2 years agofix non-fatal assertion when rotate_onion_key fails
trinity-1686a [Sun, 16 Jul 2023 20:29:23 +0000 (22:29 +0200)] 
fix non-fatal assertion when rotate_onion_key fails

2 years agoversion: Bump version to 0.4.8.2-alpha-dev
Tor CI Release [Wed, 12 Jul 2023 13:58:26 +0000 (13:58 +0000)] 
version: Bump version to 0.4.8.2-alpha-dev

2 years agoversion: Bump version to 0.4.8.2-alpha tor-0.4.8.2-alpha
Tor CI Release [Wed, 12 Jul 2023 12:30:39 +0000 (12:30 +0000)] 
version: Bump version to 0.4.8.2-alpha

2 years agorelease: ChangeLog and ReleaseNotes for 0.4.8.2-alpha
Tor CI Release [Wed, 12 Jul 2023 12:30:39 +0000 (12:30 +0000)] 
release: ChangeLog and ReleaseNotes for 0.4.8.2-alpha

2 years agofallbackdir: Update list generated on July 12, 2023
Tor CI Release [Wed, 12 Jul 2023 12:29:56 +0000 (12:29 +0000)] 
fallbackdir: Update list generated on July 12, 2023

2 years agoUpdate geoip files to match ipfire location db, 2023/07/12.
Tor CI Release [Wed, 12 Jul 2023 12:29:00 +0000 (12:29 +0000)] 
Update geoip files to match ipfire location db, 2023/07/12.

2 years agoMerge branch 'maint-0.4.7'
David Goulet [Wed, 12 Jul 2023 12:17:23 +0000 (08:17 -0400)] 
Merge branch 'maint-0.4.7'

2 years agoMerge branch 'trivial-typo-fix' into 'main'
David Goulet [Thu, 6 Jul 2023 13:29:31 +0000 (13:29 +0000)] 
Merge branch 'trivial-typo-fix' into 'main'

trivial typo fix in comment

See merge request tpo/core/tor!726

2 years agoreplace L2 vanguards that aren't Fast or Stable
Roger Dingledine [Wed, 5 Jul 2023 22:39:57 +0000 (18:39 -0400)] 
replace L2 vanguards that aren't Fast or Stable

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.

2 years agotrivial typo fix in comment
Roger Dingledine [Wed, 5 Jul 2023 20:38:32 +0000 (16:38 -0400)] 
trivial typo fix in comment

2 years agoMerge branch 'bug40566' into 'main'
David Goulet [Wed, 28 Jun 2023 17:05:47 +0000 (17:05 +0000)] 
Merge branch 'bug40566' into 'main'

Remove unused congestion control and BDP algs

See merge request tpo/core/tor!725

2 years agoChanges file for bug 40566
Mike Perry [Mon, 26 Jun 2023 20:29:56 +0000 (20:29 +0000)] 
Changes file for bug 40566

2 years agoBug 40566: Remove unused BDP estimators
Mike Perry [Mon, 26 Jun 2023 20:26:59 +0000 (20:26 +0000)] 
Bug 40566: Remove unused BDP estimators

2 years agoBug 40566: Remove unused congestion control alg structs.
Mike Perry [Mon, 26 Jun 2023 18:56:54 +0000 (18:56 +0000)] 
Bug 40566: Remove unused congestion control alg structs.

2 years agoBug 40566: Unhook unused congestion control algs
Mike Perry [Mon, 26 Jun 2023 18:51:48 +0000 (18:51 +0000)] 
Bug 40566: Unhook unused congestion control algs

2 years agoBug 40566: Remove unused cc alg files
Mike Perry [Mon, 26 Jun 2023 18:38:57 +0000 (18:38 +0000)] 
Bug 40566: Remove unused cc alg files

2 years agoMerge branch 'bug40569+40709+40443' into 'main'
David Goulet [Tue, 27 Jun 2023 13:40:15 +0000 (13:40 +0000)] 
Merge branch 'bug40569+40709+40443' into 'main'

Update congestion control params and add test vectors

See merge request tpo/core/tor!724

2 years agoAdd congestion control tests to build.
Mike Perry [Wed, 11 May 2022 18:02:01 +0000 (18:02 +0000)] 
Add congestion control tests to build.

2 years agoAdd CWND test vectors
Mike Perry [Fri, 13 May 2022 21:09:50 +0000 (21:09 +0000)] 
Add CWND test vectors

2 years agoAdd RTT Test Vectors
Mike Perry [Fri, 23 Jun 2023 14:46:28 +0000 (14:46 +0000)] 
Add RTT Test Vectors

2 years agoAdd clock heuristic test vector for congestion control.
Mike Perry [Fri, 29 Apr 2022 18:43:08 +0000 (18:43 +0000)] 
Add clock heuristic test vector for congestion control.

2 years agoExport variables and functions for CC unit tests.
Mike Perry [Wed, 11 May 2022 18:02:54 +0000 (18:02 +0000)] 
Export variables and functions for CC unit tests.

2 years agoChanges file for bug 40709
Mike Perry [Tue, 20 Jun 2023 23:27:19 +0000 (23:27 +0000)] 
Changes file for bug 40709

2 years agoBug 40709: Update and clean up tests for consensus params
Mike Perry [Tue, 20 Jun 2023 23:25:27 +0000 (23:25 +0000)] 
Bug 40709: Update and clean up tests for consensus params

2 years agoBug 40709: Update congestion control parameters
Mike Perry [Fri, 23 Jun 2023 15:05:05 +0000 (15:05 +0000)] 
Bug 40709: Update congestion control parameters

This brings us into sync with the consensus, and will be useful for test
vectors, to ensure behavior consistent with the consensus params.

2 years agoChanges file for 40569
Mike Perry [Tue, 20 Jun 2023 17:41:24 +0000 (17:41 +0000)] 
Changes file for 40569

2 years agoBug 40569: Reduce accepted range for negotiated cc_sendme_inc
Mike Perry [Tue, 20 Jun 2023 17:40:54 +0000 (17:40 +0000)] 
Bug 40569: Reduce accepted range for negotiated cc_sendme_inc

2 years agoMerge branch 'maint-0.4.7'
David Goulet [Wed, 21 Jun 2023 14:21:42 +0000 (10:21 -0400)] 
Merge branch 'maint-0.4.7'

2 years agogitignore: Add .cache used by clangd LSP
David Goulet [Wed, 21 Jun 2023 14:20:56 +0000 (10:20 -0400)] 
gitignore: Add .cache used by clangd LSP

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agoMerge branch 'bug40808' into 'main'
David Goulet [Tue, 20 Jun 2023 16:51:36 +0000 (16:51 +0000)] 
Merge branch 'bug40808' into 'main'

Bug40808

See merge request tpo/core/tor!723

2 years agoChanges file for bug40808
Mike Perry [Tue, 20 Jun 2023 16:30:55 +0000 (16:30 +0000)] 
Changes file for bug40808

2 years agoBug 40808: Change KISTSchedRunInterval range and default; add KISTSchedRunIntervalClient
Mike Perry [Tue, 20 Jun 2023 16:29:48 +0000 (16:29 +0000)] 
Bug 40808: Change KISTSchedRunInterval range and default; add KISTSchedRunIntervalClient

2 years agoscripts: Update git scripts with new gitlab canonical repository
David Goulet [Mon, 19 Jun 2023 18:31:29 +0000 (14:31 -0400)] 
scripts: Update git scripts with new gitlab canonical repository

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agoMerge branch 'ticket40773' into 'main'
David Goulet [Mon, 19 Jun 2023 18:32:44 +0000 (18:32 +0000)] 
Merge branch 'ticket40773' into 'main'

Fix compilation error on older gcc versions and MSVC.

See merge request tpo/core/tor!717

2 years agoMerge branch 'maint-0.4.7'
David Goulet [Mon, 19 Jun 2023 12:09:45 +0000 (08:09 -0400)] 
Merge branch 'maint-0.4.7'

2 years agoChange git.tpo URLs to gitlab.tpo
David Goulet [Thu, 15 Jun 2023 17:00:11 +0000 (13:00 -0400)] 
Change git.tpo URLs to gitlab.tpo

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agoUse the new Stem repository on Gitlab
David Goulet [Mon, 19 Jun 2023 12:09:24 +0000 (08:09 -0400)] 
Use the new Stem repository on Gitlab

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agoMerge branch 'tor-gitlab/mr/722'
David Goulet [Thu, 15 Jun 2023 17:23:36 +0000 (13:23 -0400)] 
Merge branch 'tor-gitlab/mr/722'

2 years agoChange git.tpo URLs to gitlab.tpo
David Goulet [Thu, 15 Jun 2023 17:00:11 +0000 (13:00 -0400)] 
Change git.tpo URLs to gitlab.tpo

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agoChanges file for Bug 40811
Mike Perry [Thu, 15 Jun 2023 16:14:56 +0000 (16:14 +0000)] 
Changes file for Bug 40811

2 years agoBug 40811: Count conflux leg launch attempts early.
Mike Perry [Thu, 15 Jun 2023 16:13:34 +0000 (16:13 +0000)] 
Bug 40811: Count conflux leg launch attempts early.

Also, double check that the consensus has enough overall exits before
attempting conflux set launch.

2 years agoMerge branch 'tor-gitlab/mr/721'
David Goulet [Wed, 14 Jun 2023 13:45:27 +0000 (09:45 -0400)] 
Merge branch 'tor-gitlab/mr/721'

2 years agoChanges file for bug40810
Mike Perry [Tue, 13 Jun 2023 18:13:02 +0000 (18:13 +0000)] 
Changes file for bug40810

2 years agoBug 40810: Avoid using 0 RTT legs
Mike Perry [Tue, 13 Jun 2023 18:15:07 +0000 (18:15 +0000)] 
Bug 40810: Avoid using 0 RTT legs

2 years agoBug 40810: Improve validation checks to ignore 0-RTT legs
Mike Perry [Sat, 10 Jun 2023 16:00:56 +0000 (16:00 +0000)] 
Bug 40810: Improve validation checks to ignore 0-RTT legs

Also add calls to dump the legs of a conflux set if we have too many

2 years agoMerge branch 'tor-gitlab/mr/715'
David Goulet [Tue, 13 Jun 2023 17:03:11 +0000 (13:03 -0400)] 
Merge branch 'tor-gitlab/mr/715'

2 years agoBug 40801: Add changes file
Mike Perry [Fri, 9 Jun 2023 16:12:51 +0000 (16:12 +0000)] 
Bug 40801: Add changes file

2 years agoBug 40801: Do not change read state of marked conns
Mike Perry [Fri, 9 Jun 2023 15:52:42 +0000 (15:52 +0000)] 
Bug 40801: Do not change read state of marked conns

2 years agoBug 40801: Send LINKED_ACK before attaching streams
Mike Perry [Thu, 8 Jun 2023 22:44:26 +0000 (22:44 +0000)] 
Bug 40801: Send LINKED_ACK before attaching streams

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.

2 years agoAdd BUG() macro to marked edge reads
Mike Perry [Tue, 6 Jun 2023 16:21:20 +0000 (16:21 +0000)] 
Add BUG() macro to marked edge reads

This will give us a full stacktrace.

2 years agoAdd conflux logs to diagnose cases where RTTs are absent/zero.
Mike Perry [Thu, 30 Mar 2023 23:43:34 +0000 (23:43 +0000)] 
Add conflux logs to diagnose cases where RTTs are absent/zero.

2 years agoFix the spacing in the 'Your Tor identity key fingerprint is' log line'
Neel Chauhan [Wed, 7 Jun 2023 17:02:33 +0000 (10:02 -0700)] 
Fix the spacing in the 'Your Tor identity key fingerprint is' log line'

2 years agoAdd a conflux helper to log conflux sets.
Mike Perry [Tue, 6 Jun 2023 15:14:33 +0000 (15:14 +0000)] 
Add a conflux helper to log conflux sets.

2 years agoMore fixes for compile-time warnings in equix and hashx
Micah Elizabeth Scott [Thu, 1 Jun 2023 18:30:40 +0000 (11:30 -0700)] 
More fixes for compile-time warnings in equix and hashx

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>
2 years agoFix compilation error on older gcc versions and MSVC.
Gabriela Moldovan [Mon, 5 Jun 2023 14:03:39 +0000 (15:03 +0100)] 
Fix compilation error on older gcc versions and MSVC.

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>
2 years agoversion: Bump version to 0.4.8.1-alpha-dev
Tor CI Release [Thu, 1 Jun 2023 14:33:12 +0000 (14:33 +0000)] 
version: Bump version to 0.4.8.1-alpha-dev

2 years agoversion: Bump version to 0.4.8.1-alpha tor-0.4.8.1-alpha
Tor CI Release [Thu, 1 Jun 2023 13:36:17 +0000 (13:36 +0000)] 
version: Bump version to 0.4.8.1-alpha

2 years agorelease: ChangeLog for 0.4.8.1-alpha
Tor CI Release [Thu, 1 Jun 2023 13:36:17 +0000 (13:36 +0000)] 
release: ChangeLog for 0.4.8.1-alpha

2 years agofallbackdir: Update list generated on June 01, 2023
Tor CI Release [Thu, 1 Jun 2023 13:35:34 +0000 (13:35 +0000)] 
fallbackdir: Update list generated on June 01, 2023

2 years agoUpdate geoip files to match ipfire location db, 2023/06/01.
Tor CI Release [Thu, 1 Jun 2023 13:35:03 +0000 (13:35 +0000)] 
Update geoip files to match ipfire location db, 2023/06/01.

2 years agoscripts: Use latest geoip database instead of using location
David Goulet [Thu, 1 Jun 2023 13:32:11 +0000 (09:32 -0400)] 
scripts: Use latest geoip database instead of using location

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agotest: Really fix the mem leak from prior commit
David Goulet [Thu, 1 Jun 2023 13:07:43 +0000 (09:07 -0400)] 
test: Really fix the mem leak from prior commit

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agotest: Fix a mem leak reported by Coverity
David Goulet [Thu, 1 Jun 2023 12:35:08 +0000 (08:35 -0400)] 
test: Fix a mem leak reported by Coverity

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>
2 years agoMerge branch 'maint-0.4.7'
David Goulet [Wed, 31 May 2023 18:32:07 +0000 (14:32 -0400)] 
Merge branch 'maint-0.4.7'

2 years agochanges: Add file for MR 714
David Goulet [Wed, 31 May 2023 18:31:59 +0000 (14:31 -0400)] 
changes: Add file for MR 714

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agoMerge branch 'tor-gitlab/mr/714' into maint-0.4.7
David Goulet [Wed, 31 May 2023 18:28:44 +0000 (14:28 -0400)] 
Merge branch 'tor-gitlab/mr/714' into maint-0.4.7

2 years agoUpdate CI builds to Debian Bullseye, fix associated compatibility bugs
Micah Elizabeth Scott [Tue, 30 May 2023 16:53:09 +0000 (09:53 -0700)] 
Update CI builds to Debian Bullseye, fix associated compatibility bugs

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>
2 years agoMerge branch 'tor-gitlab/mr/713'
David Goulet [Wed, 31 May 2023 13:07:45 +0000 (09:07 -0400)] 
Merge branch 'tor-gitlab/mr/713'

2 years agotls: Disable a warning with LibreSSL >= 3.8.0
orbea [Mon, 29 May 2023 19:56:37 +0000 (12:56 -0700)] 
tls: Disable a warning with LibreSSL >= 3.8.0

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

2 years agohs_pow: Add CompiledProofOfWorkHash torrc option
Micah Elizabeth Scott [Mon, 29 May 2023 02:45:41 +0000 (19:45 -0700)] 
hs_pow: Add CompiledProofOfWorkHash torrc option

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>
2 years agohs_pow: Update for equix API to fix issue 40794
Micah Elizabeth Scott [Sun, 28 May 2023 23:35:31 +0000 (16:35 -0700)] 
hs_pow: Update for equix API to fix issue 40794

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>
2 years agoequix: API changes for new result codes and hashx compatibility
Micah Elizabeth Scott [Sun, 28 May 2023 21:05:45 +0000 (14:05 -0700)] 
equix: API changes for new result codes and hashx compatibility

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>
2 years agohashx: API changes to allow recovery from late compile failures
Micah Elizabeth Scott [Fri, 26 May 2023 00:37:52 +0000 (17:37 -0700)] 
hashx: API changes to allow recovery from late compile failures

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>
2 years agohashx: allow hashx_compile to fail, avoid segfault without changing API
Micah Elizabeth Scott [Wed, 24 May 2023 20:25:54 +0000 (13:25 -0700)] 
hashx: allow hashx_compile to fail, avoid segfault without changing API

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>
2 years agohashx: minor, another logical operator change
Micah Elizabeth Scott [Wed, 24 May 2023 20:20:58 +0000 (13:20 -0700)] 
hashx: minor, another logical operator change

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>
2 years agotest_sandbox: equix crypto test case for issue 40794
Micah Elizabeth Scott [Wed, 24 May 2023 02:18:50 +0000 (19:18 -0700)] 
test_sandbox: equix crypto test case for issue 40794

This is an additional test case for test_sandbox that runs a small
subset of test_crypto_equix() inside the syscall sandbox, where
mprotect() is filtered.

It's reasonable for the sandbox to disallow JIT. We could revise this
policy if we want, but it seems a good default for now. The problem
in issue 40794 is that both equix and hashx need improvements in their
API to handle failures after allocation time, and this failure occurs
while the hash function is being compiled.

With this commit only, the segfault from issue 40794 is reproduced.
Subsequent commits will fix the segfault and revise the API.

Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2 years agochanges: Add file for ticket 40797
David Goulet [Thu, 25 May 2023 15:12:15 +0000 (11:12 -0400)] 
changes: Add file for ticket 40797

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agoForgot about the stub names
friendly73 [Sat, 15 Apr 2023 14:48:30 +0000 (14:48 +0000)] 
Forgot about the stub names

2 years agoAdded relay prefix to new metrics functions
friendly73 [Sat, 15 Apr 2023 12:03:14 +0000 (12:03 +0000)] 
Added relay prefix to new metrics functions

2 years agoFixed enum type not found in relay_stub
friendly73 [Fri, 24 Mar 2023 15:34:11 +0000 (15:34 +0000)] 
Fixed enum type not found in relay_stub

2 years agoAdded void stubs for the relay metrics functions to fix building without relay module
friendly73 [Fri, 24 Mar 2023 15:21:40 +0000 (15:21 +0000)] 
Added void stubs for the relay metrics functions to fix building without relay module

2 years agoFixed new arguments for metrics_store_add
friendly73 [Tue, 21 Mar 2023 14:42:17 +0000 (14:42 +0000)] 
Fixed new arguments for metrics_store_add

2 years agoRemoved getter abstraction and moved from rephist to relay_metrics.
friendly73 [Tue, 21 Mar 2023 14:25:57 +0000 (14:25 +0000)] 
Removed getter abstraction and moved from rephist to relay_metrics.

2 years agoFixed est intro getter using wrong array
friendly73 [Sun, 19 Feb 2023 19:03:48 +0000 (19:03 +0000)] 
Fixed est intro getter using wrong array

2 years agoFixed REND1 metric label value
friendly73 [Sun, 19 Feb 2023 19:03:14 +0000 (19:03 +0000)] 
Fixed REND1 metric label value

2 years agoAdded INTRO and REND metrics for relay.
friendly73 [Sun, 19 Feb 2023 16:17:50 +0000 (16:17 +0000)] 
Added INTRO and REND metrics for relay.

2 years agoMerge branch 'tor-gitlab/mr/443'
David Goulet [Thu, 25 May 2023 14:50:15 +0000 (10:50 -0400)] 
Merge branch 'tor-gitlab/mr/443'

2 years agoAdd missing changes file for tor#33669.
Alexander Færøy [Fri, 4 Nov 2022 19:57:53 +0000 (20:57 +0100)] 
Add missing changes file for tor#33669.

See: tpo/core/tor#33669.

2 years agoRestart PT processes when they die on us.
Alexander Færøy [Fri, 24 Sep 2021 14:08:12 +0000 (16:08 +0200)] 
Restart PT processes when they die on us.

This patch forces a PT reconfigure of infant PT processes as part of the
PT process' exit handler.

See: tpo/core/tor#33669

2 years agoLog at LD_PT instead of LD_GENERAL for PT process stdout lines.
Alexander Færøy [Fri, 24 Sep 2021 14:07:50 +0000 (16:07 +0200)] 
Log at LD_PT instead of LD_GENERAL for PT process stdout lines.

See: tpo/core/tor#33669

2 years agoOnly terminate PT processes that are running.
Alexander Færøy [Fri, 24 Sep 2021 14:07:21 +0000 (16:07 +0200)] 
Only terminate PT processes that are running.

See: tpo/core/tor#33669

2 years agoLog name of managed proxy in exit handler.
Alexander Færøy [Fri, 24 Sep 2021 12:47:30 +0000 (14:47 +0200)] 
Log name of managed proxy in exit handler.

This patch ensures that we can figure out which PT that terminated in
the PT exit handler.

See: tpo/core/tor#33669

2 years agoLog state transitions for Pluggable Transports
Alexander Færøy [Fri, 24 Sep 2021 12:43:24 +0000 (14:43 +0200)] 
Log state transitions for Pluggable Transports

This patch makes Tor log state transitions within the PT layer at the
info log-level. This should make it easier to figure out if Tor ends up
in a strange state.

See: tpo/core/tor#33669

2 years agotest: Fix parseconf to account for ClientUseIPv6 change for dirauth disabled
David Goulet [Thu, 25 May 2023 14:20:12 +0000 (10:20 -0400)] 
test: Fix parseconf to account for ClientUseIPv6 change for dirauth disabled

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agotest: Fix parseconf to account for ClientUseIPv6 change
David Goulet [Thu, 25 May 2023 13:21:23 +0000 (09:21 -0400)] 
test: Fix parseconf to account for ClientUseIPv6 change

Signed-off-by: David Goulet <dgoulet@torproject.org>
2 years agoMerge branch 'tor-gitlab/mr/711'
David Goulet [Wed, 24 May 2023 15:45:40 +0000 (11:45 -0400)] 
Merge branch 'tor-gitlab/mr/711'

2 years agotoken_bucket_ctr: replace 32-bit wallclock time with monotime
Micah Elizabeth Scott [Tue, 16 May 2023 23:28:26 +0000 (16:28 -0700)] 
token_bucket_ctr: replace 32-bit wallclock time with monotime

This started as a response to ticket #40792 where Coverity is
complaining about a potential year 2038 bug where we cast time_t from
approx_time() to uint32_t for use in token_bucket_ctr.

There was a larger can of worms though, since token_bucket really
doesn't want to be using wallclock time here. I audited the call sites
for approx_time() and changed any that used a 32-bit cast or made
inappropriate use of wallclock time. Things like certificate lifetime,
consensus intervals, etc. need wallclock time. Measurements of rates
over time, however, are better served with a monotonic timer that does
not try and sync with wallclock ever.

Looking closer at token_bucket, its design is a bit odd because it was
initially intended for use with tick units but later forked into
token_bucket_rw which uses ticks to count bytes per second, and
token_bucket_ctr which uses seconds to count slower events. The rates
represented by either token bucket can't be lower than 1 per second, so
the slower timer in 'ctr' is necessary to represent the slower rates of
things like connections or introduction packets or rendezvous attempts.

I considered modifying token_bucket to use 64-bit timestamps overall
instead of 32-bit, but that seemed like an unnecessarily invasive change
that would grant some peace of mind but probably not help much. I was
more interested in removing the dependency on wallclock time. The
token_bucket_rw timer already uses monotonic time. This patch converts
token_bucket_ctr to use monotonic time as well. It introduces a new
monotime_coarse_absolute_sec(), which is currently the same as nsec
divided by a billion but could be optimized easily if we ever need to.

This patch also might fix a rollover bug.. I haven't tested this
extensively but I don't think the previous version of the rollover code
on either token bucket was correct, and I would expect it to get stuck
after the first rollover.

Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2 years agoMerge branch 'tor-gitlab/mr/709'
David Goulet [Wed, 24 May 2023 15:37:05 +0000 (11:37 -0400)] 
Merge branch 'tor-gitlab/mr/709'

2 years agoMerge branch 'tor-gitlab/mr/710'
David Goulet [Wed, 24 May 2023 15:12:22 +0000 (11:12 -0400)] 
Merge branch 'tor-gitlab/mr/710'

2 years agotest_hs_descriptor: Add a test case that fails without the fix for 40793
Micah Elizabeth Scott [Thu, 18 May 2023 01:33:19 +0000 (18:33 -0700)] 
test_hs_descriptor: Add a test case that fails without the fix for 40793

This adds a bit more to hs_descriptor/test_decode_descriptor, mostly
testing pow-params and triggering the tor_assert() in issue #40793.

There was no mechanism for adding arbitrary test strings to the
encrypted portion of the desc without duplicating encode logic. One
option might be to publicize get_inner_encrypted_layer_plaintext enough
to add a mock implementation. In this patch I opt for what seems like
the simplest solution, at the cost of a small amount of #ifdef noise.
The unpacked descriptor grows a new test-only member that's used for
dropping arbitrary data in at encode time.

Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>