[tor-commits] [tor/master] clang scan-build: Fix "dereference of null pointer" warnings

nickm at torproject.org nickm at torproject.org
Fri Sep 15 20:43:37 UTC 2017


commit 0f58e173134698a813d23288dabc22f2591e9dc2
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue Sep 12 17:15:52 2017 -0400

    clang scan-build: Fix "dereference of null pointer" warnings
    
    These warnings are all in the tests, and happen because something
    that one part of the code checks for null-ness is later
    dereferenced.
---
 src/test/test_hs_client.c  | 8 +++++---
 src/test/test_hs_service.c | 9 +++++++--
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/test/test_hs_client.c b/src/test/test_hs_client.c
index af5f5cb57..6714dacea 100644
--- a/src/test/test_hs_client.c
+++ b/src/test/test_hs_client.c
@@ -203,7 +203,8 @@ test_e2e_rend_circuit_setup_legacy(void *arg)
 
  done:
   connection_free_(conn);
-  tor_free(TO_CIRCUIT(or_circ)->n_chan);
+  if (or_circ)
+    tor_free(TO_CIRCUIT(or_circ)->n_chan);
   circuit_free(TO_CIRCUIT(or_circ));
 }
 
@@ -212,7 +213,7 @@ static void
 test_e2e_rend_circuit_setup(void *arg)
 {
   uint8_t ntor_key_seed[DIGEST256_LEN] = {0};
-  origin_circuit_t *or_circ;
+  origin_circuit_t *or_circ = NULL;
   int retval;
   connection_t *conn = NULL;
 
@@ -272,7 +273,8 @@ test_e2e_rend_circuit_setup(void *arg)
 
  done:
   connection_free_(conn);
-  tor_free(TO_CIRCUIT(or_circ)->n_chan);
+  if (or_circ)
+    tor_free(TO_CIRCUIT(or_circ)->n_chan);
   circuit_free(TO_CIRCUIT(or_circ));
 }
 
diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c
index 05ced17ff..8a6a6c328 100644
--- a/src/test/test_hs_service.c
+++ b/src/test/test_hs_service.c
@@ -677,6 +677,8 @@ test_intro_established(void *arg)
 
   circ = helper_create_origin_circuit(CIRCUIT_PURPOSE_S_ESTABLISH_INTRO,
                                       flags);
+  tt_assert(circ);
+
   /* Test a wrong purpose. */
   TO_CIRCUIT(circ)->purpose = CIRCUIT_PURPOSE_S_INTRO;
   setup_full_capture_of_logs(LOG_WARN);
@@ -724,7 +726,8 @@ test_intro_established(void *arg)
   tt_int_op(TO_CIRCUIT(circ)->purpose, OP_EQ, CIRCUIT_PURPOSE_S_INTRO);
 
  done:
-  circuit_free(TO_CIRCUIT(circ));
+  if (circ)
+    circuit_free(TO_CIRCUIT(circ));
   hs_free_all();
   UNMOCK(circuit_mark_for_close_);
 }
@@ -793,6 +796,7 @@ test_introduce2(void *arg)
   dummy_state = tor_malloc_zero(sizeof(or_state_t));
 
   circ = helper_create_origin_circuit(CIRCUIT_PURPOSE_S_INTRO, flags);
+  tt_assert(circ);
 
   /* Test a wrong purpose. */
   TO_CIRCUIT(circ)->purpose = CIRCUIT_PURPOSE_S_ESTABLISH_INTRO;
@@ -844,7 +848,8 @@ test_introduce2(void *arg)
  done:
   or_state_free(dummy_state);
   dummy_state = NULL;
-  circuit_free(TO_CIRCUIT(circ));
+  if (circ)
+    circuit_free(TO_CIRCUIT(circ));
   hs_free_all();
   UNMOCK(circuit_mark_for_close_);
 }





More information about the tor-commits mailing list