Browse Source

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.
Nick Mathewson 6 years ago
parent
commit
0f58e17313
2 changed files with 12 additions and 5 deletions
  1. 5 3
      src/test/test_hs_client.c
  2. 7 2
      src/test/test_hs_service.c

+ 5 - 3
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));
 }
 

+ 7 - 2
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_);
 }