Nick Mathewson
6aaee6133d
Merge branch 'bug34077_042' into bug34077_043
2020-04-30 23:01:58 -04:00
Nick Mathewson
b4b1882da0
Merge branch 'bug34077_041' into bug34077_042
2020-04-30 22:59:08 -04:00
Nick Mathewson
d7e166bd95
Fix a GCC 10.0.1 compilation warning.
...
Fixes 34077 for 0.4.1; bugfix on 0.4.0.3-alpha. (Specifically, GCC
first gives this warning for 9eeff921ae
)
2020-04-30 22:56:31 -04:00
teor
4969dee102
relay: Update some self-test comments for IPv6
...
Part of 33222.
2020-04-30 23:27:38 +10:00
teor
aade9f31e7
relay: Log IPv4 and IPv6 ORPorts when testing reachability
...
When a relay starts testing reachability, log its IPv6 ORPort.
The existing code logs the IPv4 ORPort and DirPort.
The IPv4 ORPort is required. The other ports are only logged if they
are present.
Part of 33222.
2020-04-30 23:27:27 +10:00
teor
2a0e48385d
relay: Launch IPv4 and IPv6 ORPort self-test circuits
...
When launching relay ORPort reachability self-tests, launch tests to the
IPv4 and IPv6 ORPorts (if available).
Part of 33222.
2020-04-30 23:27:13 +10:00
teor
01d940e71b
relay: Refactor dirport self-test circuit launch
...
Remove some redundant variables, and improve some comments.
Explain that there are no advertised IPv6 DirPorts.
Part of 33222.
2020-04-30 23:26:58 +10:00
teor
a250dd6042
relay: Refactor reachability circuit launches
...
Split OR and Dir reachability circuits into their own functions.
Part of 33222.
2020-04-30 23:26:45 +10:00
teor
900994e46a
relay: Remove unused DirPort self-test code
...
DIRIND_ANON_DIRPORT never uses our ORPort, so we don't need to set it in
the directory request.
Part of 33222.
2020-04-30 23:26:35 +10:00
teor
18174fb82f
relay: Add an address family to self-test launches
...
Add an address family argument to the functions that launch relay ORPort
self-test circuits.
Part of 33222.
2020-04-30 23:26:31 +10:00
teor
42e765efad
relay: Minor selftest comment updates
...
Part of 33222.
2020-04-30 15:58:59 +10:00
teor
c5ee3d7eb8
relay: Clarify reachability status check functions
...
This is an automated commit, generated by this command:
./scripts/maint/rename_c_identifier.py \
check_whether_orport_reachable router_skip_orport_reachability_check \
check_whether_dirport_reachable router_skip_dirport_reachability_check
It was generated with --no-verify, so it probably breaks some commit hooks.
The commiter should be sure to fix them up in a subsequent commit.
Part of 33222.
2020-04-30 15:58:37 +10:00
teor
c32a8243cb
nodelist: Wrap long lines, and improve comments
...
Part of 33222.
2020-04-30 15:12:35 +10:00
teor
caab67d0c2
nodelist: Distinguish client and relay reachability
...
Change some function names to distinguish between:
* client first hop reachability (ReachableAddresses)
* relay port reachability self-tests
This is an automated commit, generated by this command:
./scripts/maint/rename_c_identifier.py \
router_skip_or_reachability router_connect_assume_or_reachable \
router_skip_dir_reachability router_connect_assume_dir_reachable
It was generated with --no-verify, so it probably breaks some commit hooks.
The commiter should be sure to fix them up in a subsequent commit.
Part of 33222.
2020-04-30 15:12:27 +10:00
teor
3eca667ae4
relay: Fix a comment typo in the selftest.c header
2020-04-30 13:54:40 +10:00
teor
15a4180a7e
relay: Refactor can extend over IPv6 checks
...
Split "can extend over IPv6" and "has advertised IPv6 ORPort" into
separate functions. They currently have the same result, but this may
change in 33818 with ExtendAllowIPv6Addresses.
Part of 33817.
2020-04-30 06:54:42 +10:00
teor
496ddd2877
relay: Refactor extend address validity function
...
Rename the function, and give it a boolean return value.
No behaviour change.
Part of 33817.
2020-04-30 06:54:42 +10:00
teor
cd7e2fc210
net: Make all address bytes functions take uint8_t *
...
Part of 33817.
2020-04-30 06:54:42 +10:00
teor
bcec1ec071
relay: Refactor choosing extend IPs
...
Flatten the logic in circuit_choose_ip_ap_for_extend().
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
9a6186c267
relay: Refactor circuit_open_connection_for_extend()
...
Refactor circuit_open_connection_for_extend(), splitting out the IP
address choice code into a new function.
Adds unit tests. No behaviour changes in tor.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
cab05a84cd
relay: Add IP version tests for circuit extends
...
Add IPv4-only and IPv6-only tests for
circuit_open_connection_for_extend().
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
c3e058dfac
relay: Choose between IPv4 and IPv6 extends at random
...
When an EXTEND2 cell has an IPv4 and an IPv6 address, choose one of them
uniformly at random.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
a0b12f3cd4
relay/circuitbuild: Refactor open connection for extend
...
Re-use the newly created extend_info to launch the connection in
circuit_open_connection_for_extend().
No behaviour change.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
16f3f6a1af
relay/circuitbuild: Re-use IPv6 connections for circuits
...
Search for existing connections using the remote IPv4 and IPv6
addresses.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
ec5f4f3c5a
relay/circuitbuild: Report IPv6 addresses in a debug log
...
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
bad1181b5d
relay/circuitbuild: Consider IPv6-only extends valid
...
Allow extend cells with IPv6-only link specifiers.
Warn and fail if both IPv4 and IPv6 are invalid.
Also warn if the IPv4 or IPv6 addresses are unexpectedly internal,
but continue with the valid address.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
44f71e08c4
relay: Log the address in circuit protocol warnings
...
Always log the address family in extend protocol warnings.
If SafeLogging is 0, also log the address and port.
Diagnostics for 33817.
2020-04-29 22:43:09 +10:00
teor
ffc2fd001a
relay: Refactor address checks into a function
...
No behaviour change.
Part of 33817.
2020-04-29 22:43:09 +10:00
teor
07c008c672
relay: Refactor address and port checks
...
tor_addr_port_is_valid_ap(ap, 0) checks if the address or port are
zero, exactly like the previous code.
Preparation for 33817.
2020-04-29 22:43:09 +10:00
teor
3253c357ee
Run "make autostyle"
2020-04-29 22:08:33 +10:00
teor
398e0e0247
nodelist: Remove an outdated comment
...
Part of 33817.
2020-04-29 21:50:26 +10:00
Nick Mathewson
77e65076ab
Merge remote-tracking branch 'tor-github/pr/1860/head'
2020-04-14 11:52:00 -04:00
Nick Mathewson
e22a8d9c95
Merge branch 'maint-0.4.3'
2020-04-13 14:14:41 -04:00
Nick Mathewson
55cb6c3fcd
Merge branch 'bug33545_043_squashed' into maint-0.4.3
2020-04-13 14:13:44 -04:00
George Kadianakis
f2f718bca5
hs-v3: Change all-zeroes hard-assert to a BUG-and-err.
...
And also disallow all-zeroes keys from the filesystem; add a test for it too.
2020-04-13 14:13:33 -04:00
George Kadianakis
37bcc9f3d2
hs-v3: Don't allow registration of an all-zeroes client auth key.
...
The client auth protocol allows attacker-controlled x25519 private keys being
passed around, which allows an attacker to potentially trigger the all-zeroes
assert for client_auth_sk in hs_descriptor.c:decrypt_descriptor_cookie().
We fixed that by making sure that an all-zeroes client auth key will not be
used.
There are no guidelines for validating x25519 private keys, and the assert was
there as a sanity check for code flow issues (we don't want to enter that
function with an unitialized key if client auth is being used). To avoid such
crashes in the future, we also changed the assert to a BUG-and-err.
2020-04-13 14:13:33 -04:00
Neel Chauhan
8e59b8560a
Return a descriptive error for 'GETINFO status/fresh-relay-descs'
2020-04-12 13:13:50 -07:00
Neel Chauhan
a638514783
Fix typo in router_build_fresh_unsigned_routerinfo() comment
2020-04-12 12:43:21 -07:00
Nick Mathewson
80031db32a
Merge remote-tracking branch 'tor-github/pr/1801/head'
2020-04-09 11:50:20 -04:00
David Goulet
cca9e1c803
hs-v3: Several fixes after #32542 review
...
asn: Accidentally left this commit out when merging #32542 , so cherry-picking
it now.
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-04-09 13:59:18 +03:00
teor
cb262930f5
relay: Run "make autostyle"
...
But only take the changes from the relay module.
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
d79e5d52bc
relay/circuitbuild: Refactor circuit_extend()
...
Make the "else" case explicit at the end of the function.
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
f8fef609f6
nodelist: Make some functions mockable
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
ec632b01db
relay: End circuitbuild logs with "."
...
Consistent logs make testing easier.
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
4f9f56be47
relay: Check for NULL arguments in circuitbuild
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
b10b287589
relay: Make circuitbuild functions STATIC
...
Allow the circuitbuild_relay functions to be accessed by the unit tests.
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
44f634d0be
relay: Remove a redundant function return value
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
ca9565b9f7
relay: Split out opening a connection for an extend
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
2640030b10
relay: Refactor some long lines from circuit_extend()
...
Part of 33633.
2020-04-09 11:00:04 +10:00
teor
5cb2bbea7d
relay: Split link specifier checks from circuit_extend()
...
Part of 33633.
2020-04-09 11:00:04 +10:00