From beb5c413b539ae4f85aab0aeb91069dac7ebbeee Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Sun, 1 Feb 2004 23:56:19 +0000 Subject: [PATCH] Replace sparse switch with if-else Style Add warning comments on known sparce switches. --- lib/dns/adb.c | 3 +- lib/dns/sec/dst/dst_api.c | 71 +++++++++++++++++-------------------- lib/dns/sec/dst/dst_parse.c | 50 ++++++++++++++++---------- 3 files changed, 67 insertions(+), 57 deletions(-) diff --git a/lib/dns/adb.c b/lib/dns/adb.c index e3ea876102..c6aa1c5c8d 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: adb.c,v 1.212 2004/01/05 06:44:30 marka Exp $ */ +/* $Id: adb.c,v 1.213 2004/02/01 23:56:18 marka Exp $ */ /* * Implementation notes @@ -2957,6 +2957,7 @@ dbfind_name(dns_adbname_t *adbname, isc_stdtime_t now, dns_rdatatype_t rdtype) ISC_TF(NAME_HINTOK(adbname)), NULL, NULL, fname, &rdataset, NULL); + /* XXXVIX this switch statement is too sparse to gen a jump table. */ switch (result) { case DNS_R_GLUE: case DNS_R_HINT: diff --git a/lib/dns/sec/dst/dst_api.c b/lib/dns/sec/dst/dst_api.c index 2277a7f236..f509fc2ecf 100644 --- a/lib/dns/sec/dst/dst_api.c +++ b/lib/dns/sec/dst/dst_api.c @@ -19,7 +19,7 @@ /* * Principal Author: Brian Wellington - * $Id: dst_api.c,v 1.109 2003/09/30 06:18:11 marka Exp $ + * $Id: dst_api.c,v 1.110 2004/02/01 23:56:19 marka Exp $ */ #include @@ -739,23 +739,24 @@ dst_key_sigsize(const dst_key_t *key, unsigned int *n) { REQUIRE(VALID_KEY(key)); REQUIRE(n != NULL); + /* XXXVIX this switch statement is too sparse to gen a jump table. */ switch (key->key_alg) { - case DST_ALG_RSAMD5: - case DST_ALG_RSASHA1: - *n = (key->key_size + 7) / 8; - break; - case DST_ALG_DSA: - *n = DNS_SIG_DSASIGSIZE; - break; - case DST_ALG_HMACMD5: - *n = 16; - break; - case DST_ALG_GSSAPI: - *n = 128; /* XXX */ - break; - case DST_ALG_DH: - default: - return (DST_R_UNSUPPORTEDALG); + case DST_ALG_RSAMD5: + case DST_ALG_RSASHA1: + *n = (key->key_size + 7) / 8; + break; + case DST_ALG_DSA: + *n = DNS_SIG_DSASIGSIZE; + break; + case DST_ALG_HMACMD5: + *n = 16; + break; + case DST_ALG_GSSAPI: + *n = 128; /* XXX */ + break; + case DST_ALG_DH: + default: + return (DST_R_UNSUPPORTEDALG); } return (ISC_R_SUCCESS); } @@ -766,17 +767,10 @@ dst_key_secretsize(const dst_key_t *key, unsigned int *n) { REQUIRE(VALID_KEY(key)); REQUIRE(n != NULL); - switch (key->key_alg) { - case DST_ALG_DH: - *n = (key->key_size + 7) / 8; - break; - case DST_ALG_RSAMD5: - case DST_ALG_RSASHA1: - case DST_ALG_DSA: - case DST_ALG_HMACMD5: - default: - return (DST_R_UNSUPPORTEDALG); - } + if (key->key_alg == DST_ALG_DH) + *n = (key->key_size + 7) / 8; + else + return (DST_R_UNSUPPORTEDALG); return (ISC_R_SUCCESS); } @@ -948,17 +942,18 @@ issymmetric(const dst_key_t *key) { REQUIRE(dst_initialized == ISC_TRUE); REQUIRE(VALID_KEY(key)); + /* XXXVIX this switch statement is too sparse to gen a jump table. */ switch (key->key_alg) { - case DST_ALG_RSAMD5: - case DST_ALG_RSASHA1: - case DST_ALG_DSA: - case DST_ALG_DH: - return (ISC_FALSE); - case DST_ALG_HMACMD5: - case DST_ALG_GSSAPI: - return (ISC_TRUE); - default: - return (ISC_FALSE); + case DST_ALG_RSAMD5: + case DST_ALG_RSASHA1: + case DST_ALG_DSA: + case DST_ALG_DH: + return (ISC_FALSE); + case DST_ALG_HMACMD5: + case DST_ALG_GSSAPI: + return (ISC_TRUE); + default: + return (ISC_FALSE); } } diff --git a/lib/dns/sec/dst/dst_parse.c b/lib/dns/sec/dst/dst_parse.c index 02e13fbdeb..80977238a9 100644 --- a/lib/dns/sec/dst/dst_parse.c +++ b/lib/dns/sec/dst/dst_parse.c @@ -19,7 +19,7 @@ /* * Principal Author: Brian Wellington - * $Id: dst_parse.c,v 1.37 2002/02/27 22:11:55 bwelling Exp $ + * $Id: dst_parse.c,v 1.38 2004/02/01 23:56:19 marka Exp $ */ #include @@ -152,18 +152,19 @@ check_hmac_md5(const dst_private_t *priv) { static int check_data(const dst_private_t *priv, const unsigned int alg) { + /* XXXVIX this switch statement is too sparse to gen a jump table. */ switch (alg) { - case DST_ALG_RSAMD5: - case DST_ALG_RSASHA1: - return (check_rsa(priv)); - case DST_ALG_DH: - return (check_dh(priv)); - case DST_ALG_DSA: - return (check_dsa(priv)); - case DST_ALG_HMACMD5: - return (check_hmac_md5(priv)); - default: - return (DST_R_UNSUPPORTEDALG); + case DST_ALG_RSAMD5: + case DST_ALG_RSASHA1: + return (check_rsa(priv)); + case DST_ALG_DH: + return (check_dh(priv)); + case DST_ALG_DSA: + return (check_dsa(priv)); + case DST_ALG_HMACMD5: + return (check_hmac_md5(priv)); + default: + return (DST_R_UNSUPPORTEDALG); } } @@ -363,13 +364,26 @@ dst__privstruct_writefile(const dst_key_t *key, const dst_private_t *priv, MINOR_VERSION); fprintf(fp, "%s %d ", ALGORITHM_STR, dst_key_alg(key)); + /* XXXVIX this switch statement is too sparse to gen a jump table. */ switch (dst_key_alg(key)) { - case DST_ALG_RSAMD5: fprintf(fp, "(RSA)\n"); break; - case DST_ALG_DH: fprintf(fp, "(DH)\n"); break; - case DST_ALG_DSA: fprintf(fp, "(DSA)\n"); break; - case DST_ALG_RSASHA1: fprintf(fp, "(RSASHA1)\n"); break; - case DST_ALG_HMACMD5: fprintf(fp, "(HMAC_MD5)\n"); break; - default : fprintf(fp, "(?)\n"); break; + case DST_ALG_RSAMD5: + fprintf(fp, "(RSA)\n"); + break; + case DST_ALG_DH: + fprintf(fp, "(DH)\n"); + break; + case DST_ALG_DSA: + fprintf(fp, "(DSA)\n"); + break; + case DST_ALG_RSASHA1: + fprintf(fp, "(RSASHA1)\n"); + break; + case DST_ALG_HMACMD5: + fprintf(fp, "(HMAC_MD5)\n"); + break; + default: + fprintf(fp, "(?)\n"); break; + break; } for (i = 0; i < priv->nelements; i++) {