Commit graph

1298 commits

Author SHA1 Message Date
David Goulet
c1e0ac63b8 mainloop: Remove unused parameter from connection_dir_is_global_write_low()
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-02-11 09:35:40 -05:00
David Goulet
ee55823a11 mainloop: Rename global_write_bucket_low()
That function is only used to test the global bucket write limit for a
directory connection.

It should _not_ be used for anything else since that function looks to see if
we are a directory authority.

Rename it to something more meaningful. No change in behavior at this commit,
only renaming.

Part of #33029

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-02-11 09:34:55 -05:00
George Kadianakis
901ed35709 Make n_subcredentials a size_t .
Based on David's review.
2020-02-11 02:13:40 +02:00
Nick Mathewson
eb8841cd95 Merge branch 'bug33104_041' 2020-02-10 14:23:13 -05:00
Nick Mathewson
d9e211ab70 Use semicolons after HT_PROTOTYPE and HT_GENERATE. 2020-02-10 12:54:43 -05:00
teor
5e6021bdae
stats: Fix a function comment typo in rephist.c
Comment-only change.
2020-02-10 15:58:25 +10:00
Nick Mathewson
6076adde25 circuitbuild: expect bug message that clang-format will generate.
clang-format wants to put no space here, so we need to tell the test
to expect a lack of a space.
2020-02-06 15:34:06 -05:00
Nick Mathewson
99a5aecbc7 Wrap columnar tables in "clang-format off/on"
These tables have aligned comments, so we don't want clang-format to
mess with them.
2020-02-06 14:54:04 -05:00
Nick Mathewson
06a6130666 Use parentheses to avoid mis-indentations of stringified macro args
clang-format sometimes thinks that "#name" should be written as
"#     name" if it appears at the start of a line.  Using () appears
to suppress this, while confusing Coccinelle.
2020-02-06 14:54:04 -05:00
Nick Mathewson
6104c407e0 maps: do not include _ as part of expected prefix in macros.
Doing this makes our macro usage a little clear IMO, and also avoids
having to use an unadorned "new" within a macro.  (Clang-format
seems to think that "new" means we're doing C++, and so it generates
some output that checkSpace.pl doesn't care for.)
2020-02-06 14:54:04 -05:00
Nick Mathewson
60f01da78e Use smaller CPP error messages
Clang-format wants to split these messages across multiple lines,
which confuses the heck out of coccinelle.
2020-02-06 14:54:04 -05:00
Nick Mathewson
e9b663beaf onion_queue.c: use TAILQ_HEAD less confusingly.
When we use macro inline, clang-format likes to break it in the
middle, which makes checkSpace get confused.
2020-02-06 14:33:05 -05:00
Nick Mathewson
98fdc3e41a Use a compile-time assert in control_events.h
(The original idiom here led clang-format to generating a too-wide line.)
2020-02-06 14:33:05 -05:00
Nick Mathewson
21f45197a2 Merge branch 'bug33103' 2020-02-06 08:28:25 -05:00
David Goulet
9278a24729 hs-v3: Remove descriptor when we remove client authorization
When the ONION_CLIENT_AUTH_REMOVE command is given to tor, now also remove the
descriptor associated with the client authorization credentials.

Fixes #33148

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-02-06 12:54:54 +02:00
Nick Mathewson
56c54a66bd Fix a memory leak in handling GETINFO.
Fixes bug 33103; bugfix on 0.4.3.1-alpha.
2020-02-05 19:18:32 -05:00
Nick Mathewson
1a375c3b19 Merge branch 'trove_2020_002_035' into trove_2020_002_041
Resolved Conflicts:
	src/feature/dirparse/parsecommon.c
2020-02-05 12:06:24 -05:00
Nick Mathewson
f160212ee8 When parsing tokens, reject early on spurious keys. 2020-02-05 11:57:31 -05:00
Nick Mathewson
9e1085c924 When parsing, reject >1024-bit RSA private keys sooner.
Private-key validation is fairly expensive for long keys in openssl,
so we need to avoid it sooner.
2020-02-05 11:11:35 -05:00
George Kadianakis
2a5e641cfe Merge branch 'tor-github/pr/1704' 2020-02-04 13:09:41 +01:00
David Goulet
08f31e405d hs-v3: Purge ephemeral client auth on NEWNYM
Fixes #33139.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-02-03 11:58:43 -05:00
David Goulet
e4245e2a6b hs-v2: Turn logs into protocol warning
All of those can be triggered remotely so change them to protocol warnings.

Fixes #32706

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-01-30 11:14:50 -05:00
Nick Mathewson
7bd671811e Rewrite control_event_signal() to use signal_table.
When we added the ACTIVE and DORMANT virtual signals, we taught the
signal command to handle them, but we didn't teach SIGNAL event to
report them.

To solve this problem and prevent it from recurring, this patch
revises the implementation of control_event_signal() to use the same
signal_table that handle_control_signal() uses.  This way, the two
controller commands can't become out of sync.

Fixes bug 33104; bugfix on 0.4.0.1-alpha.
2020-01-30 09:29:07 -05:00
George Kadianakis
ba99287d13 Write unittest that covers cases of INTRODUCE1 handling.
Also fix some memleaks of other OB unittests.
2020-01-28 01:08:41 +02:00
George Kadianakis
635f58bad2 Introduce an hs_ob_free_all() function. 2020-01-28 01:07:51 +02:00
George Kadianakis
0133169481 Allow clients to connect to the instance even with OB enabled.
We do this by including the instance's subcredentials to the list of
subcredentials that are used during INTRO2 decryption.
2020-01-28 01:07:51 +02:00
George Kadianakis
c731988cb2 Unify INTRO2 handling codepaths in OB and normal cases.
Now we use the exact same INTRO2 decrypt logic regardless of whether the
service is an OB instance or not.

The new get_subcredential_for_handling_intro2_cell() function is responsible
for loading the right subcredentials in either case.
2020-01-28 01:07:51 +02:00
George Kadianakis
da15feb0d3 Refresh OB keys when we build a new descriptor.
We now assign OB subcredentials to the service instead of computing them on the
spot. See hs_ob_refresh_keys() for more details.
2020-01-28 01:07:28 +02:00
Taylor Yu
f7a2b98674 fix leak in GETCONF
Fix a memory leak introduced by refactoring of control reply
formatting code.  Fixes bug 33039; bugfix on 0.4.3.1-alpha.
2020-01-24 12:20:47 -06:00
David Goulet
21d0d81d82 Merge branch 'tor-github/pr/1677' 2020-01-22 14:32:30 -05:00
Alexander Færøy
35721b38e4 Lower log level of standard error messages from PT's.
This patch lowers the log level of error messages from PT processes from
warning to debug.

See: https://bugs.torproject.org/33005
2020-01-22 14:32:13 -05:00
teor
08efb28743
dir_connection_t: Explain dirconn_direct better
Direct connections can use a DirPort or ORPort.
Indirect connections must use a multi-hop Tor circuit.

Comment-only changes.
2020-01-22 09:27:40 +10:00
Nick Mathewson
942543253a Use time-invariant conditional memcpy to make onionbalance loop safer 2020-01-21 10:31:36 -05:00
Nick Mathewson
b6250236a2 Pass multiple subcredentials all the way down to hs_ntor.
This approach saves us a pair of curve25519 operations for every
subcredential but the first.  It is not yet constant-time.

I've noted a few places where IMO we should refactor the code so
that the complete list of subcredentials is passed in earlier.
2020-01-21 10:31:36 -05:00
Nick Mathewson
bd0efb2702 Remove a dead BUG() check. 2020-01-21 10:31:29 -05:00
Nick Mathewson
4532c7ef6a Turn hs_subcredential_t into a proper struct. 2020-01-21 10:31:29 -05:00
David Goulet
faada6af8d hs-v3: Implement hs_ob_service_is_instance()
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-01-21 10:31:29 -05:00
David Goulet
780e498f76 hs-v3: Code improvement for INTRO2 MAC validation
Pointed by nickm during the review of #32709.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-01-21 10:31:29 -05:00
David Goulet
02f1caa583 hs-v3: Validate INTRO2 cells for onion balance
Closes #32709

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-01-21 10:31:29 -05:00
David Goulet
ef28afa255 hs-v3: Add the Onion Balance config file option
At this commit, the service reads the config file and parse it to finally set
the service config object with the options.

Part of #32709

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-01-21 10:31:29 -05:00
George Kadianakis
f1498e75dd hs-v3: Extract INTRO2 key computation to its own function.
Part of #32709

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-01-21 10:28:26 -05:00
David Goulet
16a201e703 hs-v3: Implement hs_parse_address_no_log()
The hs_parse_address() can not be used without an options_t object existing
since on error it uses the escaped_safe_str() that looks at the options.

This new function won't log and returns an error message in case of failure
that can then be used to log.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-01-21 10:28:26 -05:00
David Goulet
ca8b90a843 Merge branch 'tor-github/pr/1668' 2020-01-20 10:44:03 -05:00
teor
b23b8fa4a1
Merge remote-tracking branch 'tor-github/pr/1673' 2020-01-20 15:52:40 +10:00
teor
3851128e88
Merge branch 'ticket20218_rebased_squashed' into ticket20218_merged
* ticket 32695 removed networkstatus_consensus_has_ipv6(),
  keep that change in master.
* ticket 20218 modifies the function name and comment for
  routerstatus_has_visibly_changed(), keep that change
  in ticket20218_rebased_squashed.
2020-01-20 15:50:54 +10:00
Nick Mathewson
e2637214f2
split a wide line 2020-01-20 15:48:49 +10:00
Nick Mathewson
152cbf2a59
Rename routerstatus_has_changed to routerstatus_has_visibly_changed
This is an automated commit, generated by this command:

./scripts/maint/rename_c_identifier.py \
        routerstatus_has_changed routerstatus_has_visibly_changed

It was generated with --no-verify, since it introduces a wide line.
I'll fix it in a subsequent commit.
2020-01-20 15:48:45 +10:00
Nick Mathewson
d7a22160f5 Revert "Restore feature where nt-services detect non-"run_tor" modes."
This reverts commit 5c240db0bf.
2020-01-17 08:39:49 -05:00
Nick Mathewson
7f03ba06d8 Merge branch 'ticket32806' 2020-01-17 08:37:33 -05:00
Nick Mathewson
6d2b9c9631 Remove some dead checks
The only code that could set these options to be negative was in the
unit tests.
2020-01-17 08:31:22 -05:00