summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2017-07-15 18:06:01 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2018-05-26 06:36:16 +0200
commit5f2d52c26495b1fa9ba63e10e08974a61a8f5591 (patch)
treee788aa411816103942cce758d1687e01f3ab1dc3
parent1fcb2203746c6b959f6e8b31703fe034e76df81c (diff)
downloadgnutls-5f2d52c26495b1fa9ba63e10e08974a61a8f5591.tar.gz
Use gcc's attribute to mark fallthrough statements
gcc7 is more verbose on fallthrough warnings, and this patch set cleans up the current state by making use of the attribute when necessary. Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r--lib/crypto-selftests-pk.c14
-rw-r--r--lib/crypto-selftests.c23
-rw-r--r--lib/gnutls_int.h7
-rw-r--r--lib/handshake.c2
-rw-r--r--lib/record.c2
5 files changed, 46 insertions, 2 deletions
diff --git a/lib/crypto-selftests-pk.c b/lib/crypto-selftests-pk.c
index 9a7f3505bf..e427bb7da5 100644
--- a/lib/crypto-selftests-pk.c
+++ b/lib/crypto-selftests-pk.c
@@ -701,7 +701,7 @@ int gnutls_pk_self_test(unsigned flags, gnutls_pk_algorithm_t pk)
switch (pk) {
case GNUTLS_PK_UNKNOWN:
-
+ FALLTHROUGH;
case GNUTLS_PK_DH:
#ifndef AVOID_INTERNALS
ret = test_dh();
@@ -713,15 +713,26 @@ int gnutls_pk_self_test(unsigned flags, gnutls_pk_algorithm_t pk)
if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL))
return 0;
#endif
+ FALLTHROUGH;
case GNUTLS_PK_RSA:
PK_KNOWN_TEST(GNUTLS_PK_RSA, 1, 2048, GNUTLS_DIG_SHA256,
rsa_key2048, rsa_sig);
PK_TEST(GNUTLS_PK_RSA, test_rsa_enc, 2048, 0);
PK_TEST(GNUTLS_PK_RSA, test_sig, 3072, GNUTLS_DIG_SHA256);
+
+ if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL))
+ return 0;
+
+ FALLTHROUGH;
case GNUTLS_PK_DSA:
PK_KNOWN_TEST(GNUTLS_PK_DSA, 0, 2048, GNUTLS_DIG_SHA256,
dsa_privkey, dsa_sig);
PK_TEST(GNUTLS_PK_DSA, test_sig, 3072, GNUTLS_DIG_SHA256);
+
+ if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL))
+ return 0;
+
+ FALLTHROUGH;
case GNUTLS_PK_EC: /* Testing ECDSA */
/* Test ECDH */
#ifndef AVOID_INTERNALS
@@ -783,7 +794,6 @@ int gnutls_pk_self_test(unsigned flags, gnutls_pk_algorithm_t pk)
GNUTLS_DIG_SHA512);
break;
-
default:
return gnutls_assert_val(GNUTLS_E_NO_SELF_TEST);
}
diff --git a/lib/crypto-selftests.c b/lib/crypto-selftests.c
index 289ce04847..a637223b0a 100644
--- a/lib/crypto-selftests.c
+++ b/lib/crypto-selftests.c
@@ -1130,22 +1130,31 @@ int gnutls_cipher_self_test(unsigned flags, gnutls_cipher_algorithm_t cipher)
case GNUTLS_CIPHER_UNKNOWN:
CASE(GNUTLS_CIPHER_AES_128_CCM, test_cipher_aead,
aes128_ccm_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_CIPHER_AES_256_CCM, test_cipher_aead,
aes256_ccm_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_CIPHER_AES_128_CBC, test_cipher,
aes128_cbc_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_CIPHER_AES_192_CBC, test_cipher,
aes192_cbc_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_CIPHER_AES_256_CBC, test_cipher,
aes256_cbc_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_CIPHER_3DES_CBC, test_cipher,
tdes_cbc_vectors);
+ FALLTHROUGH;
NON_FIPS_CASE(GNUTLS_CIPHER_ARCFOUR_128, test_cipher,
arcfour_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_CIPHER_AES_128_GCM, test_cipher_aead,
aes128_gcm_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_CIPHER_AES_256_GCM, test_cipher_aead,
aes256_gcm_vectors);
+ FALLTHROUGH;
NON_FIPS_CASE(GNUTLS_CIPHER_CHACHA20_POLY1305, test_cipher_aead,
chacha_poly1305_vectors);
break;
@@ -1177,10 +1186,15 @@ int gnutls_mac_self_test(unsigned flags, gnutls_mac_algorithm_t mac)
switch (mac) {
case GNUTLS_MAC_UNKNOWN:
FIPS_STARTUP_ONLY_TEST_CASE(GNUTLS_MAC_MD5, test_mac, hmac_md5_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_MAC_SHA1, test_mac, hmac_sha1_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_MAC_SHA224, test_mac, hmac_sha224_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_MAC_SHA256, test_mac, hmac_sha256_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_MAC_SHA384, test_mac, hmac_sha384_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_MAC_SHA512, test_mac, hmac_sha512_vectors);
break;
@@ -1212,15 +1226,24 @@ int gnutls_digest_self_test(unsigned flags, gnutls_digest_algorithm_t digest)
switch (digest) {
case GNUTLS_DIG_UNKNOWN:
FIPS_STARTUP_ONLY_TEST_CASE(GNUTLS_DIG_MD5, test_digest, md5_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA1, test_digest, sha1_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA224, test_digest, sha224_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA256, test_digest, sha256_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA384, test_digest, sha384_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA512, test_digest, sha512_vectors);
#ifdef NETTLE_SHA3_FIPS202
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA3_224, test_digest, sha3_224_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA3_256, test_digest, sha3_256_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA3_384, test_digest, sha3_384_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA3_512, test_digest, sha3_512_vectors);
#endif
break;
diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h
index 5cf0e6ffd8..3c93e1b5bd 100644
--- a/lib/gnutls_int.h
+++ b/lib/gnutls_int.h
@@ -76,6 +76,13 @@ typedef int ssize_t;
#define likely(x) __builtin_expect((x), 1)
#define unlikely(x) __builtin_expect((x), 0)
#endif
+#if _GNUTLS_GCC_VERSION >= 70100
+#define FALLTHROUGH __attribute__ ((fallthrough))
+#endif
+#endif
+
+#ifndef FALLTHROUGH
+# define FALLTHROUGH
#endif
#ifndef likely
diff --git a/lib/handshake.c b/lib/handshake.c
index bed26eee9b..8bf37c1630 100644
--- a/lib/handshake.c
+++ b/lib/handshake.c
@@ -2875,6 +2875,8 @@ static int handshake_client(gnutls_session_t session)
STATE = STATE8;
if (ret < 0)
return gnutls_assert_val(ret);
+
+ FALLTHROUGH;
case STATE9:
/* receive the server key exchange */
if (session->internals.resumed == RESUME_FALSE) /* if we are not resuming */
diff --git a/lib/record.c b/lib/record.c
index 5a9f9139a5..6443018137 100644
--- a/lib/record.c
+++ b/lib/record.c
@@ -1431,7 +1431,9 @@ check_session_status(gnutls_session_t session)
return gnutls_assert_val(ret);
session->internals.recv_state = RECV_STATE_0;
+
/* Fall through: */
+ FALLTHROUGH;
case RECV_STATE_0:
_dtls_async_timer_check(session);