]> git.ipfire.org Git - thirdparty/tor.git/log
thirdparty/tor.git
6 years agoMerge remote-tracking branch 'tor-github/pr/1064' into maint-0.4.1
Nick Mathewson [Mon, 10 Jun 2019 13:37:17 +0000 (09:37 -0400)] 
Merge remote-tracking branch 'tor-github/pr/1064' into maint-0.4.1

6 years agobump to 0.4.1.2-alpha-dev
Nick Mathewson [Thu, 6 Jun 2019 12:28:34 +0000 (08:28 -0400)] 
bump to 0.4.1.2-alpha-dev

6 years agoMerge branch 'maint-0.4.0' tor-0.4.1.2-alpha
Nick Mathewson [Wed, 5 Jun 2019 20:24:10 +0000 (16:24 -0400)] 
Merge branch 'maint-0.4.0'

6 years agoMerge remote-tracking branch 'tor-github/pr/988' into maint-0.4.0
Nick Mathewson [Wed, 5 Jun 2019 20:22:52 +0000 (16:22 -0400)] 
Merge remote-tracking branch 'tor-github/pr/988' into maint-0.4.0

6 years agoMerge remote-tracking branch 'tor-github/pr/989' into maint-0.4.0
Nick Mathewson [Wed, 5 Jun 2019 20:22:29 +0000 (16:22 -0400)] 
Merge remote-tracking branch 'tor-github/pr/989' into maint-0.4.0

6 years agoMerge remote-tracking branch 'tor-github/pr/952' into maint-0.4.0
Nick Mathewson [Wed, 5 Jun 2019 20:16:34 +0000 (16:16 -0400)] 
Merge remote-tracking branch 'tor-github/pr/952' into maint-0.4.0

6 years agoMerge remote-tracking branch 'tor-github/pr/741' into maint-0.4.0
Nick Mathewson [Wed, 5 Jun 2019 20:14:51 +0000 (16:14 -0400)] 
Merge remote-tracking branch 'tor-github/pr/741' into maint-0.4.0

6 years agoMerge remote-tracking branch 'tor-github/pr/1039' into maint-0.4.0
Nick Mathewson [Wed, 5 Jun 2019 20:13:53 +0000 (16:13 -0400)] 
Merge remote-tracking branch 'tor-github/pr/1039' into maint-0.4.0

6 years agoMerge remote-tracking branch 'tor-github/pr/971' into maint-0.4.0
Nick Mathewson [Wed, 5 Jun 2019 20:12:07 +0000 (16:12 -0400)] 
Merge remote-tracking branch 'tor-github/pr/971' into maint-0.4.0

6 years agoMerge remote-tracking branch 'tor-github/pr/1020' into maint-0.4.0
Nick Mathewson [Wed, 5 Jun 2019 20:10:51 +0000 (16:10 -0400)] 
Merge remote-tracking branch 'tor-github/pr/1020' into maint-0.4.0

6 years agopush release date to tomorrow: too many last minute surprises
Nick Mathewson [Wed, 5 Jun 2019 19:53:52 +0000 (15:53 -0400)] 
push release date to tomorrow: too many last minute surprises

6 years agochange some CI-substitute logic
Nick Mathewson [Wed, 5 Jun 2019 19:38:25 +0000 (15:38 -0400)] 
change some CI-substitute logic

6 years agoMerge remote-tracking branch 'tor-github/pr/1076'
Nick Mathewson [Wed, 5 Jun 2019 19:35:43 +0000 (15:35 -0400)] 
Merge remote-tracking branch 'tor-github/pr/1076'

6 years agoBug 29034: Cleanup hs circuitmap when purpose changes.
Mike Perry [Wed, 5 Jun 2019 18:50:44 +0000 (11:50 -0700)] 
Bug 29034: Cleanup hs circuitmap when purpose changes.

Leave the other rend and hs_ident data around until circuit free, since code
may still try to inspect it after marking the circuit for close. The
circuitmap is the important thing to clean up, since repurposed
intropoints must be removed from this map to ensure validity.

6 years agoRevert "hs: Implement a helper to repurpose a circuit"
Mike Perry [Wed, 5 Jun 2019 18:38:01 +0000 (11:38 -0700)] 
Revert "hs: Implement a helper to repurpose a circuit"

This reverts commit 3789f22bcbfbc6de415a838e4c4bfb2555c7d6c3.

6 years agoRevert "test: Add test_hs_circ.c for HS circuit testing"
Mike Perry [Wed, 5 Jun 2019 18:37:32 +0000 (11:37 -0700)] 
Revert "test: Add test_hs_circ.c for HS circuit testing"

This reverts commit 41b94722e5c93ec06911f9c63296a65ce295c1ea.

6 years agoAdd missing newline after decode_intro_points() closing bracket
Neel Chauhan [Wed, 5 Jun 2019 16:50:01 +0000 (12:50 -0400)] 
Add missing newline after decode_intro_points() closing bracket

6 years agoDon't access rend data after a circuit has been marked for close.
George Kadianakis [Wed, 5 Jun 2019 15:19:23 +0000 (18:19 +0300)] 
Don't access rend data after a circuit has been marked for close.

This can cause issues if the circuit was repurposed into a padding circuit
instead of closing, since in that case we will wipe off the rend_data.

6 years agominor changelog edits
Nick Mathewson [Wed, 5 Jun 2019 13:43:43 +0000 (09:43 -0400)] 
minor changelog edits

6 years agoReplace a missing end-of-comment string
Nick Mathewson [Wed, 5 Jun 2019 13:35:45 +0000 (09:35 -0400)] 
Replace a missing end-of-comment string

This happened when I went to fix long lines after running "make
autostyle".

6 years agoRegenerate practracker excpetions file
Nick Mathewson [Wed, 5 Jun 2019 13:34:14 +0000 (09:34 -0400)] 
Regenerate practracker excpetions file

6 years agoRun "make autostyle."
Nick Mathewson [Wed, 5 Jun 2019 13:33:35 +0000 (09:33 -0400)] 
Run "make autostyle."

6 years agoBump to 0.4.1.2-alpha
Nick Mathewson [Wed, 5 Jun 2019 13:25:21 +0000 (09:25 -0400)] 
Bump to 0.4.1.2-alpha

6 years agoRewrap the changelog
Nick Mathewson [Wed, 5 Jun 2019 13:24:42 +0000 (09:24 -0400)] 
Rewrap the changelog

6 years agoStart a changelog for 0.4.1.2-alpha
Nick Mathewson [Wed, 5 Jun 2019 13:24:18 +0000 (09:24 -0400)] 
Start a changelog for 0.4.1.2-alpha

6 years agopractracker update
Nick Mathewson [Wed, 5 Jun 2019 13:06:43 +0000 (09:06 -0400)] 
practracker update

6 years agoMerge remote-tracking branch 'tor-github/pr/1053'
Nick Mathewson [Wed, 5 Jun 2019 13:04:09 +0000 (09:04 -0400)] 
Merge remote-tracking branch 'tor-github/pr/1053'

6 years agoMerge branch 'bug30286_2_squashed'
Nick Mathewson [Wed, 5 Jun 2019 12:32:39 +0000 (08:32 -0400)] 
Merge branch 'bug30286_2_squashed'

6 years agoDocument TOR_UPSTREAM_REMOTE_NAME env variable
rl1987 [Fri, 17 May 2019 16:24:26 +0000 (19:24 +0300)] 
Document TOR_UPSTREAM_REMOTE_NAME env variable

6 years agoFix typo in #29670 changes file.
George Kadianakis [Wed, 5 Jun 2019 11:56:28 +0000 (14:56 +0300)] 
Fix typo in #29670 changes file.

6 years agoMerge branch 'tor-github/pr/1072'
George Kadianakis [Wed, 5 Jun 2019 11:40:38 +0000 (14:40 +0300)] 
Merge branch 'tor-github/pr/1072'

6 years agoMerge branch 'tor-github/pr/1067'
David Goulet [Tue, 4 Jun 2019 13:57:03 +0000 (09:57 -0400)] 
Merge branch 'tor-github/pr/1067'

6 years agoupdate practracker
Nick Mathewson [Tue, 4 Jun 2019 12:29:43 +0000 (08:29 -0400)] 
update practracker

6 years agoMerge branch 'bug29670_035' into bug29670_041
Nick Mathewson [Tue, 4 Jun 2019 12:29:05 +0000 (08:29 -0400)] 
Merge branch 'bug29670_035' into bug29670_041

6 years agosendme: Do not decrement window in a log_debug()
David Goulet [Mon, 3 Jun 2019 18:31:51 +0000 (14:31 -0400)] 
sendme: Do not decrement window in a log_debug()

If "Log debug ..." is not set, the decrement never happens. This lead to the
package/deliver window to be out of sync at the stream level and thus breaking
the connection after 50+ cells.

Fixes #30628

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agofix some simple typos
Roger Dingledine [Sat, 1 Jun 2019 19:37:51 +0000 (15:37 -0400)] 
fix some simple typos

6 years agoPractracker excpetions.
Nick Mathewson [Fri, 31 May 2019 16:41:44 +0000 (12:41 -0400)] 
Practracker excpetions.

6 years agoMerge branch 'bug29875_035' into bug29875_master
Nick Mathewson [Fri, 31 May 2019 16:40:43 +0000 (12:40 -0400)] 
Merge branch 'bug29875_035' into bug29875_master

6 years agochanges file for bug 29875.
Nick Mathewson [Fri, 31 May 2019 16:39:52 +0000 (12:39 -0400)] 
changes file for bug 29875.

6 years agonum_bridges_usable(): only count configured bridges.
Nick Mathewson [Fri, 31 May 2019 16:19:29 +0000 (12:19 -0400)] 
num_bridges_usable(): only count configured bridges.

When this function was implemented, it counted all the entry guards
in the bridge set.  But this included previously configured bridges,
as well as currently configured ones!  Instead, only count the
_filtered_ bridges (ones that are configured and possibly reachable)
as maybe usable.

Fixes bug 29875; bugfix on 0.3.0.1-alpha.

6 years agoConsider dir info to have changed when the bridges change
Nick Mathewson [Fri, 31 May 2019 15:46:58 +0000 (11:46 -0400)] 
Consider dir info to have changed when the bridges change

Otherwise, we won't realize that we haven't got enough bridge
information to build circuits.  Part of a fix for ticket 29875.

6 years agotest: Add test_hs_circ.c for HS circuit testing
David Goulet [Fri, 31 May 2019 14:43:01 +0000 (10:43 -0400)] 
test: Add test_hs_circ.c for HS circuit testing

For now, only tests HS circuit repurpose function.

Part of #29034

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agoMention Travis/Appveyor/Jenkins URLs in ReleasingTor.md
rl1987 [Fri, 31 May 2019 06:35:19 +0000 (09:35 +0300)] 
Mention Travis/Appveyor/Jenkins URLs in ReleasingTor.md

6 years agoMerge branch 'tor-github/pr/1059'
George Kadianakis [Thu, 30 May 2019 18:01:59 +0000 (21:01 +0300)] 
Merge branch 'tor-github/pr/1059'

6 years agoMerge branch 'tor-github/pr/1057'
David Goulet [Thu, 30 May 2019 16:58:35 +0000 (12:58 -0400)] 
Merge branch 'tor-github/pr/1057'

6 years agochanges file for 30629
Nick Mathewson [Thu, 30 May 2019 16:58:12 +0000 (12:58 -0400)] 
changes file for 30629

6 years agoMerge branch 'tor-github/pr/1055'
David Goulet [Thu, 30 May 2019 16:53:52 +0000 (12:53 -0400)] 
Merge branch 'tor-github/pr/1055'

6 years agoMerge branch 'tor-github/pr/1054'
David Goulet [Thu, 30 May 2019 13:59:21 +0000 (09:59 -0400)] 
Merge branch 'tor-github/pr/1054'

6 years agoMerge branch 'tor-github/pr/1049'
David Goulet [Thu, 30 May 2019 13:56:18 +0000 (09:56 -0400)] 
Merge branch 'tor-github/pr/1049'

6 years agoMerge branch 'tor-github/pr/1032'
George Kadianakis [Wed, 29 May 2019 18:28:04 +0000 (21:28 +0300)] 
Merge branch 'tor-github/pr/1032'

6 years agoMerge branch 'tor-github/pr/1037'
George Kadianakis [Wed, 29 May 2019 18:25:32 +0000 (21:25 +0300)] 
Merge branch 'tor-github/pr/1037'

6 years agoMerge branch 'maint-0.4.0'
George Kadianakis [Wed, 29 May 2019 18:20:02 +0000 (21:20 +0300)] 
Merge branch 'maint-0.4.0'

6 years agoMerge branch 'tor-github/pr/924' into maint-0.4.0
George Kadianakis [Wed, 29 May 2019 18:19:56 +0000 (21:19 +0300)] 
Merge branch 'tor-github/pr/924' into maint-0.4.0

6 years agoShutdown libevent _after_ the subsystems.
Nick Mathewson [Wed, 29 May 2019 15:25:47 +0000 (11:25 -0400)] 
Shutdown libevent _after_ the subsystems.

This is necessary since shutting down libevent frees some pointer
that the subsystems want to free themselves. A longer term solution
will be to turn the evloop module into a subsystem itself, but for
now it is best to do the minimal fix.

Fixes bug 30629; bugfix on 0.4.1.1-alpha.

6 years agoMake get_proxy_type() connection-specific
Nick Mathewson [Wed, 29 May 2019 15:00:09 +0000 (11:00 -0400)] 
Make get_proxy_type() connection-specific

Previously, we were looking at our global settings to see what kind
of proxy we had.  But doing this would sometimes give us the wrong
results when we had ClientTransportPlugin configured but we weren't
using it for a particular connection.  In several places in the
code, we had added checks to see if we were _really_ using a PT or
whether we were using a socks proxy, but we had forgotten to do so
in at least once case.  Instead, since every time we call this
function we are asking about a single connection, it is probably
best just to make this function connection-specific.

Fixes bug 29670; bugfix on 0.2.6.2-alpha.

6 years agoRemove want_cmddata from HSFETCH, which does not in fact want data
Nick Mathewson [Wed, 29 May 2019 14:10:57 +0000 (10:10 -0400)] 
Remove want_cmddata from HSFETCH, which does not in fact want data

This looks a copy-and-paste error to me.  Fixes bug 30646; bugfix on
0.4.1.1-alpha.

6 years agoMerge branch 'ticket30561_029' into ticket30561_035
Nick Mathewson [Wed, 29 May 2019 13:43:20 +0000 (09:43 -0400)] 
Merge branch 'ticket30561_029' into ticket30561_035

6 years agohs: Implement a helper to repurpose a circuit
David Goulet [Tue, 28 May 2019 13:44:06 +0000 (09:44 -0400)] 
hs: Implement a helper to repurpose a circuit

When we repurpose a hidden service circuit, we need to clean up from the HS
circuit map and any HS related data structured contained in the circuit.

This commit adds an helper function that does it when repurposing a hidden
service circuit.

Fixes #29034

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agoTweak comments in tor_vasprintf(), and add a changes file for 30651
Nick Mathewson [Wed, 29 May 2019 13:38:32 +0000 (09:38 -0400)] 
Tweak comments in tor_vasprintf(), and add a changes file for 30651

6 years agoFixed tor_vasprintf on systems without vasprintf.
Tobias Stoeckmann [Wed, 29 May 2019 13:33:24 +0000 (09:33 -0400)] 
Fixed tor_vasprintf on systems without vasprintf.

If tor is compiled on a system with neither vasprintf nor _vscprintf,
the fallback implementation exposes a logic flaw which prevents
proper usage of strings longer than 127 characters:

* tor_vsnprintf returns -1 if supplied buffer is not large enough,
  but tor_vasprintf uses this function to retrieve required length
* the result of tor_vsnprintf is not properly checked for negative
  return values

Both aspects together could in theory lead to exposure of uninitialized
stack memory in the resulting string. This requires an invalid format
string or data that exceeds integer limitations.

Fortunately tor is not even able to run with this implementation because
it runs into asserts early on during startup. Also the unit tests fail
during a "make check" run.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
  [backported to 0.2.9 by nickm]

6 years agoChanges file for bug 30614
Nick Mathewson [Wed, 29 May 2019 13:05:26 +0000 (09:05 -0400)] 
Changes file for bug 30614

6 years agoUse MAP_INHERIT_ZERO or MAP_INHERIT_NONE if available.
Taylor R Campbell [Sat, 25 May 2019 03:55:24 +0000 (03:55 +0000)] 
Use MAP_INHERIT_ZERO or MAP_INHERIT_NONE if available.

Fixes assertion failure in tests on NetBSD:

slow/prob_distr/stochastic_log_logistic: [forking] May 25 03:56:58.091 [err] tor_assertion_failed_(): Bug: src/lib/crypt_ops/crypto_rand_fast.c:184: crypto_fast_rng_new_from_seed: Assertion inherit != INHERIT_RES_KEEP failed; aborting. (on Tor 0.4.1.1-alpha-dev 29955f13e5bc8e61)
May 25 03:56:58.091 [err] Bug: Assertion inherit != INHERIT_RES_KEEP failed in crypto_fast_rng_new_from_seed at src/lib/crypt_ops/crypto_rand_fast.c:184: . (Stack trace not available) (on Tor 0.4.1.1-alpha-dev 29955f13e5bc8e61)
[Lost connection!]

6 years agoTrivial fix for a trivial warning with gcc 9.1.1
Nick Mathewson [Tue, 28 May 2019 23:45:50 +0000 (19:45 -0400)] 
Trivial fix for a trivial warning with gcc 9.1.1

Fix on 4e3d144fb0940d8ee5a89427d471ea3656e8e122; bug not in any
released Tor.

6 years agoMerge branch 'tor-github/pr/1047'
David Goulet [Tue, 28 May 2019 18:59:07 +0000 (14:59 -0400)] 
Merge branch 'tor-github/pr/1047'

6 years agoMerge branch 'tor-github/pr/1042'
George Kadianakis [Mon, 27 May 2019 11:22:01 +0000 (14:22 +0300)] 
Merge branch 'tor-github/pr/1042'

6 years agoMerge branch 'tor-github/pr/1043'
George Kadianakis [Mon, 27 May 2019 11:20:51 +0000 (14:20 +0300)] 
Merge branch 'tor-github/pr/1043'

6 years agoTests for deciding how full our relay cells should be
Nick Mathewson [Thu, 23 May 2019 13:29:24 +0000 (09:29 -0400)] 
Tests for deciding how full our relay cells should be

6 years agoMake sure that we send at least some random data in RELAY_DATA cells
Nick Mathewson [Fri, 17 May 2019 15:03:16 +0000 (11:03 -0400)] 
Make sure that we send at least some random data in RELAY_DATA cells

Proposal 289 prevents SENDME-flooding by requiring the other side to
authenticate the data it has received.  But this data won't actually
be random if they are downloading a known resource.  "No problem",
we said, "let's fell the empty parts of our cells with some
randomness!" and we did that in #26871.

Unfortunately, if the relay data payloads are all completely full,
there won't be any empty parts for us to randomize.

Therefore, we now pick random "randomness windows" between
CIRCWINDOW_INCREMENT/2 and CIRCWINDOW_INCREMENT. We remember whether we have
sent a cell containing at least 16 bytes of randomness in that window.  If we
haven't, then when the window is exhausted, we send one.  (This window approach
is designed to lower the number of rng checks we have to do.  The number 16 is
pulled out of a hat to change the attacker's guessing difficulty to
"impossible".)

Implements 28646.

6 years agotrivial whitespace fixes
Roger Dingledine [Sun, 26 May 2019 21:32:42 +0000 (17:32 -0400)] 
trivial whitespace fixes

6 years agochanges file for test coverage
Nick Mathewson [Fri, 24 May 2019 11:42:59 +0000 (07:42 -0400)] 
changes file for test coverage

6 years agocov-test-determinism: use the same RNG seed as in travis.yml
Nick Mathewson [Thu, 23 May 2019 18:36:01 +0000 (14:36 -0400)] 
cov-test-determinism: use the same RNG seed as in travis.yml

We added this facility so that we could get deterministic PRNG
behavior for coverage testing on tests that use a replaced PRNG.
We need to have our coverage determinism tool test for this as well.

6 years agoCoverage: do not include test-rebind in coverage builds.
Nick Mathewson [Wed, 15 May 2019 18:58:46 +0000 (14:58 -0400)] 
Coverage: do not include test-rebind in coverage builds.

Because it invokes the Tor mainloop, it does unpredictable things to
test coverage of a lot of code that it doesn't actually test at
all.  (It is more an integration test than anything else.)

6 years agoIn coverage builds, use branch-free timeradd() and timersub()
Nick Mathewson [Wed, 15 May 2019 12:28:25 +0000 (08:28 -0400)] 
In coverage builds, use branch-free timeradd() and timersub()

The ordinary definitions of timeradd() and timersub() contain a
branch. However, in coverage builds, this means that we get spurious
complaints about partially covered basic blocks, in a way that makes
our coverage determinism harder to check.

6 years agoIn coverage builds, avoid basic-block complexity in log_debug
Nick Mathewson [Wed, 15 May 2019 12:27:02 +0000 (08:27 -0400)] 
In coverage builds, avoid basic-block complexity in log_debug

Ordinarily we skip calling log_fn(LOG_DEBUG,...) if debug logging is
completely disabled.  However, in coverage builds, this means that
we get spurious complaints about partially covered basic blocks, in
a way that makes our coverage determinism harder to check.

6 years agoMerge branch 'tor-github/pr/1022'
David Goulet [Thu, 23 May 2019 13:50:28 +0000 (09:50 -0400)] 
Merge branch 'tor-github/pr/1022'

6 years agoMerge branch 'tor-github/pr/1034'
David Goulet [Thu, 23 May 2019 13:40:07 +0000 (09:40 -0400)] 
Merge branch 'tor-github/pr/1034'

6 years agoMerge branch 'tor-github/pr/988'
David Goulet [Thu, 23 May 2019 13:30:36 +0000 (09:30 -0400)] 
Merge branch 'tor-github/pr/988'

6 years agoExtract length-deciding function from package_raw_inbuf.
Nick Mathewson [Fri, 17 May 2019 14:29:35 +0000 (10:29 -0400)] 
Extract length-deciding function from package_raw_inbuf.

6 years agorefactor logic to decide how much to package from inbuf
Roger Dingledine [Thu, 19 Jul 2018 01:00:27 +0000 (21:00 -0400)] 
refactor logic to decide how much to package from inbuf

no actual changes in behavior

6 years agoOnly reject POSTDESCRIPTOR purpose= when the purpose is unrecognized
Nick Mathewson [Thu, 23 May 2019 12:24:29 +0000 (08:24 -0400)] 
Only reject POSTDESCRIPTOR purpose= when the purpose is unrecognized

Fixes bug 30580; bugfix on 0.4.1.1-alpha.

6 years agoNow this repository is full of 0.4.1.1-alpha-dev
Nick Mathewson [Wed, 22 May 2019 22:07:29 +0000 (18:07 -0400)] 
Now this repository is full of 0.4.1.1-alpha-dev

6 years agocircuitpadding tests: Use tt_i64_op() to compare int64_t values tor-0.4.1.1-alpha
Nick Mathewson [Wed, 22 May 2019 19:19:24 +0000 (15:19 -0400)] 
circuitpadding tests: Use tt_i64_op() to compare int64_t values

Bug not in any released Tor.

6 years agoMore 0.4.1.1-alpha hangelogs edits
Nick Mathewson [Wed, 22 May 2019 17:57:34 +0000 (13:57 -0400)] 
More 0.4.1.1-alpha hangelogs edits

(credit to seborn here)

6 years agoFold last entry into changelog
Nick Mathewson [Wed, 22 May 2019 16:00:20 +0000 (12:00 -0400)] 
Fold last entry into changelog

6 years agoBump to 0.4.1.1-alpha
Nick Mathewson [Wed, 22 May 2019 15:56:02 +0000 (11:56 -0400)] 
Bump to 0.4.1.1-alpha

6 years agoMerge remote-tracking branch 'dgoulet/ticket30454_035_01'
Nick Mathewson [Wed, 22 May 2019 15:50:46 +0000 (11:50 -0400)] 
Merge remote-tracking branch 'dgoulet/ticket30454_035_01'

6 years agoMerge branch 'ticket30428_041_02_squashed'
Nick Mathewson [Wed, 22 May 2019 15:48:43 +0000 (11:48 -0400)] 
Merge branch 'ticket30428_041_02_squashed'

6 years agosendme: Add non fatal asserts for extra safety
David Goulet [Wed, 22 May 2019 15:05:36 +0000 (11:05 -0400)] 
sendme: Add non fatal asserts for extra safety

Two non fatal asserts are added in this commit. First one is to see if the
SENDME digest list kept on the circuit for validation ever grows bigger than
the maximum number of expected SENDME on a circuit (currently 10).

The second one is to know if we ever send more than one SENDME at a time on a
circuit. In theory, we shouldn't but if we ever do, the v1 implementation
wouldn't work because we only keep one single cell digest (the previous cell
to the SENDME) on the circuit/cpath. Thus, sending two SENDME consecutively
will lead to a mismatch on the other side because the same cell digest would
be use and thus the circuit would collapse.

Finally, add an extra debug log in case we emit a v0 which also includes the
consensus emit version in that case.

Part of #30428

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agosendme: Always pop last SENDME digest from circuit
David Goulet [Wed, 22 May 2019 14:37:27 +0000 (10:37 -0400)] 
sendme: Always pop last SENDME digest from circuit

We must not accumulate digests on the circuit if the other end point is using
another SENDME version that is not using those digests like v0.

This commit makes it that we always pop the digest regardless of the version.

Part of #30428

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agosendme: Clarify how sendme_circuit_cell_is_next() works
David Goulet [Tue, 21 May 2019 19:19:30 +0000 (15:19 -0400)] 
sendme: Clarify how sendme_circuit_cell_is_next() works

Commit 4ef8470fa5480d3b was actually reverted before because in the end we
needed to do this minus 1 check on the window.

This commit clarifies that in the code, takes the useful comment changes from
4ef8470fa5480d3b and makes sendme_circuit_cell_is_next() private since it
behaves in a very specific way that one external caller might expect.

Part of #30428.

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agosendme: Properly record SENDMEs on both edges
David Goulet [Wed, 15 May 2019 14:16:05 +0000 (10:16 -0400)] 
sendme: Properly record SENDMEs on both edges

Turns out that we were only recording the "b_digest" but to have
bidirectionnal authenticated SENDMEs, we need to use the "f_digest" in the
forward cell situation.

Because of the cpath refactoring, this commit plays with the crypt_path_ and
relay_crypto_t API a little bit in order to respect the abstractions.

Previously, we would record the cell digest as the SENDME digest in the
decrypt cell function but to avoid code duplication (both directions needs to
record), we now do that right after iff the cell is recognized (at the edge).
It is now done in circuit_receive_relay_cell() instead.

We now also record the cell digest as the SENDME digest in both relay cell
encryption functions since they are split depending on the direction.
relay_encrypt_cell_outbound() and relay_encrypt_cell_inbound() need to
consider recording the cell digest depending on their direction (f vs b
digest).

Fixes #30428

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agosendme: Never fallback to v0 if unknown version
David Goulet [Tue, 7 May 2019 13:44:10 +0000 (09:44 -0400)] 
sendme: Never fallback to v0 if unknown version

There was a missing cell version check against our max supported version. In
other words, we do not fallback to v0 anymore in case we do know the SENDME
version.

We can either handle it or not, never fallback to the unauthenticated version
in order to avoid gaming the authenticated logic.

Add a unit tests making sure we properly test that and also test that we can
always handle the default emit and accepted versions.

Fixes #30428

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agosendme: Validate v1 SENDMEs on both client and exit side
David Goulet [Tue, 7 May 2019 13:19:41 +0000 (09:19 -0400)] 
sendme: Validate v1 SENDMEs on both client and exit side

The validation of the SENDME cell is now done as the very first thing when
receiving it for both client and exit. On failure to validate, the circuit is
closed as detailed in the specification.

Part of #30428

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agosendme: Record cell digest on both client and exit
David Goulet [Tue, 7 May 2019 13:16:39 +0000 (09:16 -0400)] 
sendme: Record cell digest on both client and exit

It turns out that only the exit side is validating the authenticated SENDME v1
logic and never the client side. Which means that if a client ever uploaded
data towards an exit, the authenticated SENDME logic wouldn't apply.

For this to work, we have to record the cell digest client side as well which
introduced a new function that supports both type of edges.

This also removes a test that is not valid anymore which was that we didn't
allow cell recording on an origin circuit (client).

Part of #30428

Signed-off-by: David Goulet <dgoulet@torproject.org>
6 years agoMerge remote-tracking branch 'nickm/ticket30454_034_01_squashed' into ticket30454_035_01
David Goulet [Wed, 22 May 2019 15:43:55 +0000 (11:43 -0400)] 
Merge remote-tracking branch 'nickm/ticket30454_034_01_squashed' into ticket30454_035_01

6 years agoEdit changelog entries for clarity and conciseness
Nick Mathewson [Wed, 22 May 2019 15:06:37 +0000 (11:06 -0400)] 
Edit changelog entries for clarity and conciseness

6 years agolight movement and editing on changelog
Nick Mathewson [Tue, 21 May 2019 23:18:58 +0000 (19:18 -0400)] 
light movement and editing on changelog

6 years agoAdd a new "autostyle" make target to run all of our reformatting
Nick Mathewson [Mon, 20 May 2019 16:08:30 +0000 (12:08 -0400)] 
Add a new "autostyle" make target to run all of our reformatting

Closes ticket 30539.

6 years agoupdateCopyright: look at the current year.
Nick Mathewson [Mon, 20 May 2019 16:02:20 +0000 (12:02 -0400)] 
updateCopyright: look at the current year.

6 years agorectify_include_paths: warn instead of aborting on duplicate headers
Nick Mathewson [Mon, 20 May 2019 15:52:45 +0000 (11:52 -0400)] 
rectify_include_paths: warn instead of aborting on duplicate headers

We have two sendme.h files at the moment; we should fix that, but
not in this branch.