aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2020-05-06 16:46:52 -0400
committerNick Mathewson <nickm@torproject.org>2020-05-06 16:46:52 -0400
commit1041306092e978f6b028693e7893470bff1c61f9 (patch)
treef41f5df20de58f17abbd8b59d55ba992966b7549
parenta02e866642c28b4c0cbe415f8573c4ede4d9caf7 (diff)
parent3e42464f5a6f8fac7651bad05f180cc1ed2ca51d (diff)
downloadtor-1041306092e978f6b028693e7893470bff1c61f9.tar.gz
tor-1041306092e978f6b028693e7893470bff1c61f9.zip
Merge branch 'bug34078_prelim_041' into maint-0.4.1
-rw-r--r--configure.ac16
-rw-r--r--src/core/proto/proto_socks.c5
-rw-r--r--src/ext/ed25519/donna/ed25519_tor.c4
-rw-r--r--src/feature/dirauth/keypin.c2
-rw-r--r--src/feature/relay/dns.c2
-rw-r--r--src/lib/cc/compat_compiler.h6
-rw-r--r--src/lib/crypt_ops/crypto_digest_nss.c3
-rw-r--r--src/lib/net/address.c1
8 files changed, 33 insertions, 6 deletions
diff --git a/configure.ac b/configure.ac
index 628811e53e..9f784d932c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -365,6 +365,22 @@ if test "$tor_cv_c_c99_designated_init" != "yes"; then
AC_MSG_ERROR([Your compiler doesn't support c99 designated initializers. This is required as of Tor 0.2.6.x])
fi
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -Werror"
+AC_CACHE_CHECK([for __attribute__((fallthrough))],
+ tor_cv_c_attr_fallthrough,
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([extern int x; void fn(void) ;],
+ [[ switch (x) { case 1: fn(); __attribute__((fallthrough));
+ case 2: fn(); break; } ]])],
+ [tor_cv_c_attr_fallthrough=yes],
+ [tor_cv_c_attr_fallthrough=no] )])
+CFLAGS="$saved_CFLAGS"
+
+if test "$tor_cv_c_attr_fallthrough" == "yes"; then
+ AC_DEFINE(HAVE_ATTR_FALLTHROUGH, [1], [defined if we have the fallthrough attribute.])
+fi
+
TORUSER=_tor
AC_ARG_WITH(tor-user,
AS_HELP_STRING(--with-tor-user=NAME, [specify username for tor daemon]),
diff --git a/src/core/proto/proto_socks.c b/src/core/proto/proto_socks.c
index b657a7b758..f9f8c8afc0 100644
--- a/src/core/proto/proto_socks.c
+++ b/src/core/proto/proto_socks.c
@@ -1067,7 +1067,10 @@ parse_socks_client(const uint8_t *data, size_t datalen,
log_info(LD_NET, "SOCKS 5 client: need authentication.");
*drain_out = -1;
return 2;
- /* fall through */
+ default:
+ /* This wasn't supposed to be exhaustive; there are other
+ * authentication methods too. */
+ ;
}
*reason = tor_strdup("server doesn't support any of our available "
diff --git a/src/ext/ed25519/donna/ed25519_tor.c b/src/ext/ed25519/donna/ed25519_tor.c
index 7f5ab398d8..a5bb6f4e21 100644
--- a/src/ext/ed25519/donna/ed25519_tor.c
+++ b/src/ext/ed25519/donna/ed25519_tor.c
@@ -35,6 +35,9 @@
#define ED25519_FN(fn) ED25519_FN2(fn,ED25519_SUFFIX)
#include "orconfig.h"
+
+#include "lib/cc/compat_compiler.h"
+
#include "ed25519-donna.h"
#include "ed25519_donna_tor.h"
#include "ed25519-randombytes.h"
@@ -366,4 +369,3 @@ ed25519_donna_scalarmult_with_group_order(unsigned char *out,
}
#include "test-internals.c"
-
diff --git a/src/feature/dirauth/keypin.c b/src/feature/dirauth/keypin.c
index 667feb2c03..06cb9ba1ff 100644
--- a/src/feature/dirauth/keypin.c
+++ b/src/feature/dirauth/keypin.c
@@ -267,7 +267,7 @@ keypin_add_or_replace_entry_in_map(keypin_ent_t *ent)
}
tor_free(ent2);
r = -1;
- /* Fall through */
+ /* Note lack of return here: we fall through to the next line. */
}
keypin_add_entry_to_map(ent);
diff --git a/src/feature/relay/dns.c b/src/feature/relay/dns.c
index 05b97e0ae2..d9662962d2 100644
--- a/src/feature/relay/dns.c
+++ b/src/feature/relay/dns.c
@@ -546,7 +546,7 @@ send_resolved_cell,(edge_connection_t *conn, uint8_t answer_type,
break;
} else {
answer_type = RESOLVED_TYPE_ERROR;
- /* fall through. */
+ /* We let this fall through and treat it as an error. */
}
/* Falls through. */
case RESOLVED_TYPE_ERROR_TRANSIENT:
diff --git a/src/lib/cc/compat_compiler.h b/src/lib/cc/compat_compiler.h
index a8d1593214..5f5f244d02 100644
--- a/src/lib/cc/compat_compiler.h
+++ b/src/lib/cc/compat_compiler.h
@@ -50,6 +50,12 @@
#define CHECK_SCANF(formatIdx, firstArg)
#endif /* defined(__GNUC__) */
+#if defined(HAVE_ATTR_FALLTHROUGH)
+#define FALLTHROUGH __attribute__((fallthrough))
+#else
+#define FALLTHROUGH
+#endif
+
/* What GCC do we have? */
#ifdef __GNUC__
#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
diff --git a/src/lib/crypt_ops/crypto_digest_nss.c b/src/lib/crypt_ops/crypto_digest_nss.c
index b73f0736fd..bc7a0fab16 100644
--- a/src/lib/crypt_ops/crypto_digest_nss.c
+++ b/src/lib/crypt_ops/crypto_digest_nss.c
@@ -87,7 +87,7 @@ library_supports_digest(digest_algorithm_t alg)
switch (alg) {
case DIGEST_SHA1: /* Fall through */
case DIGEST_SHA256: /* Fall through */
- case DIGEST_SHA512: /* Fall through */
+ case DIGEST_SHA512:
return true;
case DIGEST_SHA3_256: /* Fall through */
case DIGEST_SHA3_512: /* Fall through */
@@ -557,4 +557,3 @@ crypto_hmac_sha256(char *hmac_out,
tor_assert(ok);
}
-
diff --git a/src/lib/net/address.c b/src/lib/net/address.c
index 546af800a9..2cd193cf1b 100644
--- a/src/lib/net/address.c
+++ b/src/lib/net/address.c
@@ -928,6 +928,7 @@ tor_addr_copy_tight(tor_addr_t *dest, const tor_addr_t *src)
break;
case AF_INET6:
memcpy(dest->addr.in6_addr.s6_addr, src->addr.in6_addr.s6_addr, 16);
+ break;
case AF_UNSPEC:
break;
// LCOV_EXCL_START