Commit Graph

23083 Commits

Author SHA1 Message Date
Nick Mathewson cc397449fc Use __attribute__((fallthrough)) rather than magic GCC comments.
GCC added an implicit-fallthrough warning a while back, where it
would complain if you had a nontrivial "case:" block that didn't end
with break, return, or something like that.  Clang recently added
the same thing.

GCC, however, would let you annotate a fall-through as intended by
any of various magic "/* fall through */" comments.  Clang, however,
only seems to like "__attribute__((fallthrough))".  Fortunately, GCC
accepts that too.

A previous commit in this branch defined a FALLTHROUGH macro to do
the right thing if GNUC is defined; here we replace all of our "fall
through" comments with uses of that macro.

This is an automated commit, made with the following perl one-liner:

  #!/usr/bin/perl -i -p
  s#/\* *falls? ?thr.*?\*/#FALLTHROUGH;#i;
2020-05-06 16:51:11 -04:00
Nick Mathewson 3d3641152b Remove an incorrect "Fall through" comment. 2020-05-06 15:08:02 -04:00
Nick Mathewson 8798c0a94a address.c: add a single (harmless) missing break; 2020-05-06 15:08:02 -04:00
Nick Mathewson 37b8324ed3 include compat_compiler for ed25519_donna 2020-05-06 15:08:02 -04:00
Nick Mathewson 9fe23b8672 Replace some "fall through" comments not at the end of a case. 2020-05-06 15:08:02 -04:00
Nick Mathewson 75547c01a3 Replace a "fall through" comment that was outside a switch. 2020-05-06 15:08:02 -04:00
Nick Mathewson 6c3c94357c Add a fallthrough macro.
This macro defers to __attribute__((fallthrough)) on GCC (and
clang).  Previously we had been using GCC's magic /* fallthrough */
comments, but clang very sensibly doesn't accept those.

Since not all compiler recognize it, we only define it when our
configure script detects that it works.

Part of a fix for 34078.
2020-05-06 15:08:02 -04:00
teor d380acaeca Merge remote-tracking branch 'tor-github/pr/1784' into maint-0.3.5 2020-04-09 11:02:49 +10:00
Nick Mathewson 6bafe97bc1 Add a TOR_SKIP_TESTCASES environment variable for suppressing tests.
For example, "TOR_SKIP_TESTCASES=crypto/.. ./src/test/test" will run
the tests and suppress all the "crypto/" tests.  You could get the
same effect by running "./src/test/test :crypto/..", but that can be
harder to arrange from CI.

Part of a fix/workaround for 33643.
2020-03-19 18:36:36 -04:00
Nick Mathewson 3150c30351 Bump version to 0.3.5.10-dev 2020-03-18 12:15:32 -04:00
Nick Mathewson 0526801ed4 Port rsa_private_key_too_long() to work on OpenSSL 1.1.0. 2020-03-18 08:19:48 -04:00
Nick Mathewson fe3d8ec38e Merge branch 'trove_2020_002_035' into maint-0.3.5 2020-03-17 15:21:48 -04:00
George Kadianakis 089e57d22f Fix TROVE-2020-003.
Given that ed25519 public key validity checks are usually not needed
and (so far) they are only necessary for onion addesses in the Tor
protocol, we decided to fix this specific bug instance without
modifying the rest of the codebase (see below for other fix
approaches).

In our minimal fix we check that the pubkey in
hs_service_add_ephemeral() is valid and error out otherwise.
2020-03-17 11:44:45 -04:00
George Kadianakis c940b7cf13 Trivial bugfixes found during TROVE investigation. 2020-03-17 11:43:03 -04:00
Nick Mathewson f958b537ab Use >= consistently with max_bits. 2020-03-17 10:44:38 -04:00
Nick Mathewson 2328c79a5f Add off-by-one checks for key length. 2020-03-17 10:44:38 -04:00
Nick Mathewson 8abdb39489 Extract key length check into a new function, and check more fields.
In the openssl that I have, it should be safe to only check the size
of n.  But if I'm wrong, or if other openssls work differently, we
should check whether any of the fields are too large.

Issue spotted by Teor.
2020-03-17 10:44:38 -04:00
Nick Mathewson 29c9675bde Fix memory leak in crypto_pk_asn1_decode_private.
(Deep, deep thanks to Taylor for reminding me to test this!)
2020-03-14 14:17:37 -04:00
Nick Mathewson ab2e66ccdc Add a test for crypto_pk_asn1_decode_private maxbits. 2020-03-14 14:17:13 -04:00
Nick Mathewson be064f77b9 Revise TROVE-2020-002 fix to work on older OpenSSL versions.
Although OpenSSL before 1.1.1 is no longer supported, it's possible
that somebody is still using it with 0.3.5, so we probably shouldn't
break it with this fix.
2020-03-14 13:38:53 -04:00
Nick Mathewson d17108a187 Bump to 0.3.5.10 2020-03-13 16:56:31 -04:00
Nick Mathewson b9d71f3848 Merge remote-tracking branch 'tor-github/pr/1693/head' into maint-0.3.5 2020-03-13 16:46:09 -04:00
David Goulet 894ff2dc84 dos: Pass transport name on new client connection
For a bridge configured with a pluggable transport, the transport name is
used, with the IP address, for the GeoIP client cache entry.

However, the DoS subsystem was not aware of it and always passing NULL when
doing a lookup into the GeoIP cache.

This resulted in bridges with a PT are never able to apply DoS defenses for
newly created connections.

Fixes #33491

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-03-10 14:45:13 -04:00
Alexander Færøy b9c7c61ea5 Lowercase the BridgeDistribution value from torrc in descriptors.
This patch ensures that we always lowercase the BridgeDistribution from
torrc in descriptors before submitting it.

See: https://bugs.torproject.org/32753
2020-02-12 12:21:41 +10:00
Nick Mathewson 99d044d553 Fix a Rust compilation warning; resolve bug 33212. 2020-02-10 13:32:09 -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
teor 41d52e9cd8 Merge remote-tracking branch 'tor-github/pr/1614' into maint-0.3.5 2020-01-30 07:53:53 +10:00
Nick Mathewson 1f163fcbde Change BUG() messages in buf_flush_to_tls() to IF_BUG_ONCE()
We introduced these BUG() checks in b0ddaac074 to prevent a
recurrence of bug 23690.  But there's a report of the BUG() message
getting triggered and filling up the disk.  Let's change it to
IF_BUG_ONCE().

Fixes bug 33093; bugfix on 0.3.2.2-alpha.
2020-01-29 08:31:22 -05:00
teor 19954cffd7 Merge remote-tracking branch 'tor-github/pr/1513' into maint-0.3.5 2020-01-16 09:57:27 +10:00
Peter Gerber 0d64bafcfe Correct how we use libseccomp
This fixes a startup crash with libseccomp v2.4.0 if Sandbox is
set to 1.
2019-12-17 09:47:28 -05:00
Nick Mathewson 0c4f0ec977 bump to 0.3.5.9-dev 2019-12-09 16:01:11 -05:00
Nick Mathewson 74cae547e5 Merge branch 'maint-0.2.9' into maint-0.3.5 2019-12-06 16:02:07 -05:00
Karsten Loesing b7b467d3af Update geoip and geoip6 to the December 3 2019 database. 2019-12-06 11:50:35 +01:00
Nick Mathewson c53567c36f Bump version to 0.3.5.9 2019-12-05 13:29:49 -05:00
teor aee966cb06 Merge remote-tracking branch 'tor-github/pr/1277' into maint-0.3.5 2019-12-05 10:11:18 +10:00
teor 501b5174d8 Merge remote-tracking branch 'tor-github/pr/1464' into maint-0.3.5 2019-11-25 12:35:11 +10:00
teor 400cee261e Merge remote-tracking branch 'tor-github/pr/1422' into maint-0.3.5 2019-11-25 12:34:29 +10:00
teor 54c01119ed Merge remote-tracking branch 'tor-github/pr/1405' into maint-0.3.5 2019-11-25 12:33:55 +10:00
teor 83424cb62f Merge remote-tracking branch 'tor-github/pr/1395' into maint-0.3.5 2019-11-25 12:33:14 +10:00
teor f9812ee5f7 Merge remote-tracking branch 'tor-github/pr/1394' into maint-0.3.5 2019-11-25 12:29:43 +10:00
Nick Mathewson 7beaaed245 Merge branch 'maint-0.2.9' into maint-0.3.5 2019-11-11 10:14:03 -05:00
Karsten Loesing 853b6ad095 Update geoip and geoip6 to the November 6 2019 database. 2019-11-09 10:10:19 +01:00
Nick Mathewson 4d70e725d1 Do not try to shut down the event loop when it is not initialized.
Doing so caused us to crash in some unusual circumstances, such as
using --verify-config to verify a configuration that failed during
the options_act() stage.

Fixes bug 32407; bugfix on 0.3.3.1-alpha.
2019-11-06 11:33:23 -05:00
teor 1bde356bf6 Merge branch 'maint-0.2.9' into maint-0.3.5 2019-11-06 11:19:30 +10:00
teor 4abfcb7997 Merge remote-tracking branch 'tor-github/pr/1354' into maint-0.3.5 2019-11-06 11:18:09 +10:00
teor 0e2834a371 Merge remote-tracking branch 'tor-github/pr/1348' into maint-0.3.5 2019-11-06 11:17:43 +10:00
teor d2e4262ebc Merge remote-tracking branch 'tor-github/pr/1340' into maint-0.3.5 2019-11-06 11:17:01 +10:00
teor 6bfdd09679 Merge remote-tracking branch 'tor-github/pr/1343' into maint-0.3.5 2019-11-06 11:16:09 +10:00
teor 0650bf3695 Merge remote-tracking branch 'tor-github/pr/1342' into maint-0.2.9 2019-11-06 11:15:45 +10:00