[tor-commits] [tor/master] Move around some LCOV_EXCLs in src/common

nickm at torproject.org nickm at torproject.org
Thu Sep 28 13:26:09 UTC 2017


commit a64d79ca4c5699be161a54d94e0e6c0f7d06db7c
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Sep 28 09:25:17 2017 -0400

    Move around some LCOV_EXCLs in src/common
    
    Apparently, my compiler now generates coverage markers for
    label-only lines, so we need to exclude those too if they are meant
    to be unreachable.
---
 src/common/address.c           | 10 ++++++----
 src/common/compat.c            |  2 +-
 src/common/compress.c          |  3 ++-
 src/common/compress_lzma.c     |  8 ++++++--
 src/common/crypto.c            |  5 +++--
 src/common/crypto_curve25519.c |  3 +++
 src/common/crypto_ed25519.c    | 13 +++++++++++--
 src/common/crypto_pwbox.c      |  2 +-
 src/common/crypto_s2k.c        | 10 +++++++---
 src/common/tortls.c            |  3 ++-
 src/common/util.c              |  6 ++++--
 src/common/util_format.c       |  5 ++++-
 12 files changed, 50 insertions(+), 20 deletions(-)

diff --git a/src/common/address.c b/src/common/address.c
index aa61b5423..dbe129be5 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -907,8 +907,8 @@ tor_addr_is_loopback(const tor_addr_t *addr)
       return (tor_addr_to_ipv4h(addr) & 0xff000000) == 0x7f000000;
     case AF_UNSPEC:
       return 0;
-    default:
       /* LCOV_EXCL_START */
+    default:
       tor_fragile_assert();
       return 0;
       /* LCOV_EXCL_STOP */
@@ -1031,8 +1031,10 @@ tor_addr_copy_tight(tor_addr_t *dest, const tor_addr_t *src)
       memcpy(dest->addr.in6_addr.s6_addr, src->addr.in6_addr.s6_addr, 16);
     case AF_UNSPEC:
       break;
+      // LCOV_EXCL_START
     default:
-      tor_fragile_assert(); // LCOV_EXCL_LINE
+      tor_fragile_assert();
+      // LCOV_EXCL_STOP
     }
 }
 
@@ -1138,8 +1140,8 @@ tor_addr_compare_masked(const tor_addr_t *addr1, const tor_addr_t *addr2,
           return 0;
         else
           return 1;
-      default:
         /* LCOV_EXCL_START */
+      default:
         tor_fragile_assert();
         return 0;
         /* LCOV_EXCL_STOP */
@@ -1194,8 +1196,8 @@ tor_addr_hash(const tor_addr_t *addr)
     return 0x4e4d5342;
   case AF_INET6:
     return siphash24g(&addr->addr.in6_addr.s6_addr, 16);
-  default:
     /* LCOV_EXCL_START */
+  default:
     tor_fragile_assert();
     return 0;
     /* LCOV_EXCL_STOP */
diff --git a/src/common/compat.c b/src/common/compat.c
index ab1fbc64f..7fe97488e 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -3350,8 +3350,8 @@ get_total_system_memory_impl(void)
   tor_free(s);
   return result * 1024;
 
- err:
   /* LCOV_EXCL_START Can't reach this unless proc is broken. */
+ err:
   tor_free(s);
   close(fd);
   return 0;
diff --git a/src/common/compress.c b/src/common/compress.c
index 472268a43..110eb6586 100644
--- a/src/common/compress.c
+++ b/src/common/compress.c
@@ -188,8 +188,9 @@ tor_compress_impl(int compress,
                "Error while %scompresing data: bad input?",
                compress?"":"un");
         goto err; // bad data.
-      default:
+
         // LCOV_EXCL_START
+      default:
         tor_assert_nonfatal_unreached();
         goto err;
         // LCOV_EXCL_STOP
diff --git a/src/common/compress_lzma.c b/src/common/compress_lzma.c
index 2bdbbe1d4..6426ede4f 100644
--- a/src/common/compress_lzma.c
+++ b/src/common/compress_lzma.c
@@ -158,8 +158,10 @@ tor_lzma_state_size_precalc(int compress, compression_level_t level)
 
   return (size_t)memory_usage;
 
+ // LCOV_EXCL_START
  err:
-  return 0; // LCOV_EXCL_LINE
+  return 0;
+ // LCOV_EXCL_STOP
 }
 #endif /* defined(HAVE_LZMA) */
 
@@ -212,9 +214,11 @@ tor_lzma_compress_new(int compress,
   atomic_counter_add(&total_lzma_allocation, result->allocation);
   return result;
 
+ /* LCOV_EXCL_START */
  err:
-  tor_free(result); // LCOV_EXCL_LINE
+  tor_free(result);
   return NULL;
+ /* LCOV_EXCL_STOP */
 #else /* !(defined(HAVE_LZMA)) */
   (void)compress;
   (void)method;
diff --git a/src/common/crypto.c b/src/common/crypto.c
index 1730619f8..6fe3c661c 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -1798,8 +1798,8 @@ crypto_digest_algorithm_get_name(digest_algorithm_t alg)
       return "sha3-256";
     case DIGEST_SHA3_512:
       return "sha3-512";
-    default:
       // LCOV_EXCL_START
+    default:
       tor_fragile_assert();
       return "??unknown_digest??";
       // LCOV_EXCL_STOP
@@ -2447,9 +2447,10 @@ crypto_dh_new(int dh_type)
 #endif /* defined(OPENSSL_1_1_API) */
 
   return res;
- err:
+
   /* LCOV_EXCL_START
    * This error condition is only reached when an allocation fails */
+ err:
   crypto_log_errors(LOG_WARN, "creating DH object");
   if (res->dh) DH_free(res->dh); /* frees p and g too */
   tor_free(res);
diff --git a/src/common/crypto_curve25519.c b/src/common/crypto_curve25519.c
index f5c2acb87..8793fa627 100644
--- a/src/common/crypto_curve25519.c
+++ b/src/common/crypto_curve25519.c
@@ -318,8 +318,11 @@ curve25519_basepoint_spot_check(void)
   }
 
   goto end;
+ // LCOV_EXCL_START -- we can only hit this code if there is a bug in our
+ // curve25519-basepoint implementation.
  fail:
   r = -1;
+ // LCOV_EXCL_STOP
  end:
   curve25519_use_ed = save_use_ed;
   return r;
diff --git a/src/common/crypto_ed25519.c b/src/common/crypto_ed25519.c
index 969cc1047..94b23e31b 100644
--- a/src/common/crypto_ed25519.c
+++ b/src/common/crypto_ed25519.c
@@ -293,9 +293,12 @@ ed25519_sign_prefixed,(ed25519_signature_t *signature_out,
 
   prefixed_msg = get_prefixed_msg(msg, msg_len, prefix_str,
                                   &prefixed_msg_len);
-  if (!prefixed_msg) {
+  if (BUG(!prefixed_msg)) {
+    /* LCOV_EXCL_START -- only possible when the message and prefix are
+     * ridiculously huge */
     log_warn(LD_GENERAL, "Failed to get prefixed msg.");
     return -1;
+    /* LCOV_EXCL_STOP */
   }
 
   retval = ed25519_sign(signature_out,
@@ -338,9 +341,12 @@ ed25519_checksig_prefixed(const ed25519_signature_t *signature,
 
   prefixed_msg = get_prefixed_msg(msg, msg_len, prefix_str,
                                   &prefixed_msg_len);
-  if (!prefixed_msg) {
+  if (BUG(!prefixed_msg)) {
+    /* LCOV_EXCL_START -- only possible when the message and prefix are
+     * ridiculously huge */
     log_warn(LD_GENERAL, "Failed to get prefixed msg.");
     return -1;
+    /* LCOV_EXCL_STOP */
   }
 
   retval = ed25519_checksig(signature,
@@ -718,8 +724,11 @@ ed25519_impl_spot_check,(void))
    */
   goto end;
 
+ // LCOV_EXCL_START -- We can only reach this if our ed25519 implementation is
+ // broken.
  fail:
   r = -1;
+ // LCOV_EXCL_STOP
  end:
   return r;
 }
diff --git a/src/common/crypto_pwbox.c b/src/common/crypto_pwbox.c
index db8892e37..12acc9331 100644
--- a/src/common/crypto_pwbox.c
+++ b/src/common/crypto_pwbox.c
@@ -107,7 +107,6 @@ crypto_pwbox(uint8_t **out, size_t *outlen_out,
   rv = 0;
   goto out;
 
- err:
   /* LCOV_EXCL_START
 
      This error case is often unreachable if we're correctly coded, unless
@@ -123,6 +122,7 @@ crypto_pwbox(uint8_t **out, size_t *outlen_out,
        - pwbox_encoded_encode can't fail unless we're using trunnel wrong,
          or it's buggy.
    */
+ err:
   tor_free(result);
   rv = -1;
   /* LCOV_EXCL_STOP */
diff --git a/src/common/crypto_s2k.c b/src/common/crypto_s2k.c
index 4db6762ef..b2fcca54c 100644
--- a/src/common/crypto_s2k.c
+++ b/src/common/crypto_s2k.c
@@ -86,9 +86,11 @@ secret_to_key_key_len(uint8_t type)
       return DIGEST_LEN;
     case S2K_TYPE_SCRYPT:
       return DIGEST256_LEN;
+    // LCOV_EXCL_START
     default:
-      tor_fragile_assert(); // LCOV_EXCL_LINE
-      return -1;            // LCOV_EXCL_LINE
+      tor_fragile_assert();
+      return -1;
+    // LCOV_EXCL_STOP
   }
 }
 
@@ -169,9 +171,11 @@ make_specifier(uint8_t *spec_out, uint8_t type, unsigned flags)
       /* r = 8; p = 2. */
       spec_out[SCRYPT_SPEC_LEN-1] = (3u << 4) | (1u << 0);
       break;
+    // LCOV_EXCL_START - we should have returned above.
     default:
-      tor_fragile_assert(); // LCOV_EXCL_LINE - we should have returned above.
+      tor_fragile_assert();
       return S2K_BAD_ALGORITHM;
+    // LCOV_EXCL_STOP
   }
 
   return speclen;
diff --git a/src/common/tortls.c b/src/common/tortls.c
index 8727b605b..197c5e8d3 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -444,8 +444,9 @@ tor_x509_name_new(const char *cname)
     goto error;
   /* LCOV_EXCL_BR_STOP */
   return name;
- error:
+
   /* LCOV_EXCL_START : these lines will only execute on out of memory errors*/
+ error:
   X509_NAME_free(name);
   return NULL;
   /* LCOV_EXCL_STOP */
diff --git a/src/common/util.c b/src/common/util.c
index bcb1449a1..5ff7e104d 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -2980,8 +2980,9 @@ unescape_string(const char *s, char **result, size_t *size_out)
         *out = '\0';
         if (size_out) *size_out = out - *result;
         return cp+1;
-      case '\0':
+
         /* LCOV_EXCL_START -- we caught this in parse_config_from_line. */
+      case '\0':
         tor_fragile_assert();
         tor_free(*result);
         return NULL;
@@ -3029,8 +3030,9 @@ unescape_string(const char *s, char **result, size_t *size_out)
             *out++ = cp[1];
             cp += 2;
             break;
-          default:
+
             /* LCOV_EXCL_START */
+          default:
             /* we caught this above in the initial loop. */
             tor_assert_nonfatal_unreached();
             tor_free(*result); return NULL;
diff --git a/src/common/util_format.c b/src/common/util_format.c
index 1f7b8b03a..e51757a4e 100644
--- a/src/common/util_format.c
+++ b/src/common/util_format.c
@@ -266,10 +266,13 @@ base64_encode(char *dest, size_t destlen, const char *src, size_t srclen,
     ENCODE_N(3);
     ENCODE_PAD();
     break;
+  // LCOV_EXCL_START -- we can't reach this point, because we enforce
+  // 0 <= ncov_idx < 3 in the loop above.
   default:
     /* Something went catastrophically wrong. */
-    tor_fragile_assert(); // LCOV_EXCL_LINE
+    tor_fragile_assert();
     return -1;
+  // LCOV_EXCL_STOP
   }
 
 #undef ENCODE_N



More information about the tor-commits mailing list