Browse Source

Merge branch 'tor-github/pr/936'

George Kadianakis 5 years ago
parent
commit
9084a90b00

+ 4 - 0
changes/coverity_falsepos

@@ -0,0 +1,4 @@
+  o Code simplification and refactoring:
+    - Refactor several places in our code that coverity incorrectly believed
+      that we might have memory leaks, so that we can analyze our software
+      more easily.  Closes ticket 30147.

+ 3 - 3
scripts/maint/practracker/exceptions.txt

@@ -119,7 +119,7 @@ problem function-size /src/core/or/connection_or.c:connection_or_client_learned_
 problem function-size /src/core/or/connection_or.c:connection_or_compute_authenticate_cell_body() 235
 problem file-size /src/core/or/policies.c 3171
 problem function-size /src/core/or/policies.c:policy_summarize() 107
-problem function-size /src/core/or/protover.c:protover_all_supported() 116
+problem function-size /src/core/or/protover.c:protover_all_supported() 117
 problem file-size /src/core/or/relay.c 3173
 problem function-size /src/core/or/relay.c:circuit_receive_relay_cell() 123
 problem function-size /src/core/or/relay.c:relay_send_command_from_edge_() 101
@@ -245,7 +245,7 @@ problem function-size /src/feature/rend/rendmid.c:rend_mid_establish_intro_legac
 problem function-size /src/feature/rend/rendparse.c:rend_parse_v2_service_descriptor() 187
 problem function-size /src/feature/rend/rendparse.c:rend_decrypt_introduction_points() 104
 problem function-size /src/feature/rend/rendparse.c:rend_parse_introduction_points() 131
-problem file-size /src/feature/rend/rendservice.c 4509
+problem file-size /src/feature/rend/rendservice.c 4510
 problem function-size /src/feature/rend/rendservice.c:rend_service_prune_list_impl_() 107
 problem function-size /src/feature/rend/rendservice.c:rend_config_service() 164
 problem function-size /src/feature/rend/rendservice.c:rend_service_load_auth_keys() 178
@@ -256,7 +256,7 @@ problem function-size /src/feature/rend/rendservice.c:rend_service_intro_has_ope
 problem function-size /src/feature/rend/rendservice.c:rend_service_rendezvous_has_opened() 117
 problem function-size /src/feature/rend/rendservice.c:directory_post_to_hs_dir() 108
 problem function-size /src/feature/rend/rendservice.c:upload_service_descriptor() 111
-problem function-size /src/feature/rend/rendservice.c:rend_consider_services_intro_points() 169
+problem function-size /src/feature/rend/rendservice.c:rend_consider_services_intro_points() 170
 problem function-size /src/feature/stats/rephist.c:rep_hist_load_mtbf_data() 185
 problem function-size /src/feature/stats/rephist.c:rep_hist_format_exit_stats() 148
 problem function-size /src/lib/compress/compress.c:tor_compress_impl() 133

+ 2 - 1
src/core/or/protover.c

@@ -820,6 +820,8 @@ protover_all_supported(const char *s, char **missing_out)
        * ones and, if so, add them to unsupported->ranges. */
       if (versions->low != 0 && versions->high != 0) {
         smartlist_add(unsupported->ranges, versions);
+      } else {
+        tor_free(versions);
       }
       /* Finally, if we had something unsupported, add it to the list of
        * missing_some things and mark that there was something missing. */
@@ -828,7 +830,6 @@ protover_all_supported(const char *s, char **missing_out)
         all_supported = 0;
       } else {
         proto_entry_free(unsupported);
-        tor_free(versions);
       }
     } SMARTLIST_FOREACH_END(range);
 

+ 1 - 0
src/feature/rend/rendservice.c

@@ -4227,6 +4227,7 @@ rend_consider_services_intro_points(time_t now)
        * directly ourselves. */
       intro->extend_info = extend_info_from_node(node, 0);
       if (BUG(intro->extend_info == NULL)) {
+        tor_free(intro);
         break;
       }
       intro->intro_key = crypto_pk_new();

+ 6 - 2
src/lib/net/address.c

@@ -2027,8 +2027,12 @@ string_is_valid_nonrfc_hostname(const char *string)
 
   smartlist_split_string(components,string,".",0,0);
 
-  if (BUG(smartlist_len(components) == 0))
-    return 0; // LCOV_EXCL_LINE should be impossible given the earlier checks.
+  if (BUG(smartlist_len(components) == 0)) {
+    // LCOV_EXCL_START should be impossible given the earlier checks.
+    smartlist_free(components);
+    return 0;
+    // LCOV_EXCL_STOP
+  }
 
   /* Allow a single terminating '.' used rarely to indicate domains
    * are FQDNs rather than relative. */