[tor-commits] [tor/master] prop224: Fix coverity warnings from #20657 merge.

nickm at torproject.org nickm at torproject.org
Wed Aug 9 12:29:25 UTC 2017


commit 21e5146529e4040c7391f3696baa5e6b4370d06d
Author: George Kadianakis <desnacked at riseup.net>
Date:   Wed Aug 9 13:45:37 2017 +0300

    prop224: Fix coverity warnings from #20657 merge.
    
    - Fix various ssize_t/size_t confusions in the tests.
    
    - Fix a weird memset argument:
      "bad_memset: Argument -16 in memset loses precision in
      memset(&desc_two->blinded_kp.pubkey.pubkey, -16, 32UL)."
    
    - Fix check_after_deref instance in check_state_line_for_service_rev_counter():
      "check_after_deref: Null-checking items suggests that it may be null,
      but it has already been dereferenced on all paths leading to the
      check."
---
 src/or/hs_service.c           |  7 +++----
 src/test/test_hs_intropoint.c | 14 ++++++++------
 src/test/test_hs_service.c    |  4 ++--
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/or/hs_service.c b/src/or/hs_service.c
index 5f3696454..cb3a49cb8 100644
--- a/src/or/hs_service.c
+++ b/src/or/hs_service.c
@@ -2111,10 +2111,9 @@ check_state_line_for_service_rev_counter(const char *state_line,
            b64_key_str, rev_counter);
 
  done:
-  if (items) {
-    SMARTLIST_FOREACH(items, char*, s, tor_free(s));
-    smartlist_free(items);
-  }
+  tor_assert(items);
+  SMARTLIST_FOREACH(items, char*, s, tor_free(s));
+  smartlist_free(items);
 
   return rev_counter;
 }
diff --git a/src/test/test_hs_intropoint.c b/src/test/test_hs_intropoint.c
index 09af10904..a5031c5ae 100644
--- a/src/test/test_hs_intropoint.c
+++ b/src/test/test_hs_intropoint.c
@@ -446,14 +446,15 @@ test_establish_intro_wrong_sig(void *arg)
   /* Create outgoing ESTABLISH_INTRO cell and extract its payload so that we
      attempt to parse it. */
   cell_len = new_establish_intro_encoded_cell(circ_nonce, cell_body);
-  tt_u64_op(cell_len, OP_GT, 0);
+  tt_i64_op(cell_len, OP_GT, 0);
 
   /* Mutate the last byte (signature)! :) */
   cell_body[cell_len - 1]++;
 
   /* Receive the cell. Should fail. */
   setup_full_capture_of_logs(LOG_INFO);
-  retval = hs_intro_received_establish_intro(intro_circ, cell_body, cell_len);
+  retval = hs_intro_received_establish_intro(intro_circ, cell_body,
+                                             (size_t)cell_len);
   expect_log_msg_containing("Failed to verify ESTABLISH_INTRO cell.");
   teardown_capture_of_logs();
   tt_int_op(retval, ==, -1);
@@ -482,14 +483,15 @@ helper_establish_intro_v3(or_circuit_t *intro_circ)
   /* Create outgoing ESTABLISH_INTRO cell and extract its payload so that we
    * attempt to parse it. */
   cell_len = new_establish_intro_cell(circ_nonce, &cell);
-  tt_u64_op(cell_len, OP_GT, 0);
+  tt_i64_op(cell_len, OP_GT, 0);
   tt_assert(cell);
   cell_len = trn_cell_establish_intro_encode(cell_body, sizeof(cell_body),
                                              cell);
   tt_int_op(cell_len, OP_GT, 0);
 
   /* Receive the cell */
-  retval = hs_intro_received_establish_intro(intro_circ, cell_body, cell_len);
+  retval = hs_intro_received_establish_intro(intro_circ, cell_body,
+                                             (size_t) cell_len);
   tt_int_op(retval, ==, 0);
 
  done:
@@ -521,11 +523,11 @@ helper_establish_intro_v2(or_circuit_t *intro_circ)
                                            (char*)cell_body,
                                            sizeof(cell_body), key1,
                                            circ_nonce);
-  tt_int_op(cell_len, >, 0);
+  tt_int_op(cell_len, OP_GT, 0);
 
   /* Receive legacy establish_intro */
   retval = hs_intro_received_establish_intro(intro_circ,
-                                       cell_body, cell_len);
+                                             cell_body, (size_t) cell_len);
   tt_int_op(retval, ==, 0);
 
  done:
diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c
index aea2c8fbf..60efca15f 100644
--- a/src/test/test_hs_service.c
+++ b/src/test/test_hs_service.c
@@ -1258,9 +1258,9 @@ test_revision_counter_state(void *arg)
   /* Prepare both descriptors */
   desc_one->desc->plaintext_data.revision_counter = 42;
   desc_two->desc->plaintext_data.revision_counter = 240;
-  memset(&desc_one->blinded_kp.pubkey.pubkey, '\x42',
+  memset(&desc_one->blinded_kp.pubkey.pubkey, 66,
          sizeof(desc_one->blinded_kp.pubkey.pubkey));
-  memset(&desc_two->blinded_kp.pubkey.pubkey, '\xf0',
+  memset(&desc_two->blinded_kp.pubkey.pubkey, 240,
          sizeof(desc_one->blinded_kp.pubkey.pubkey));
 
   /* Turn the descriptor rev counters into state lines */



More information about the tor-commits mailing list