Browse Source

Merge remote-tracking branch 'origin/maint-0.2.3'

Nick Mathewson 11 years ago
parent
commit
d9847165e0
2 changed files with 21 additions and 9 deletions
  1. 3 0
      changes/bug7022
  2. 18 9
      src/or/circuitbuild.c

+ 3 - 0
changes/bug7022

@@ -0,0 +1,3 @@
+  o Minor bugfixes:
+    - Fix memory leaks whenever we logged any message about the "path
+      bias" detection. Fixes bug 7022; bugfix on 0.2.3.21-rc.

+ 18 - 9
src/or/circuitbuild.c

@@ -2666,12 +2666,13 @@ pathbias_count_first_hop(origin_circuit_t *circ)
               approx_time()))) {
         log_notice(LD_BUG,
                "One-hop circuit has length %d. Path state is %s. "
-               "Circuit is a %s currently %s. %s",
+               "Circuit is a %s currently %s.%s",
                circ->build_state->desired_path_len,
                pathbias_state_to_string(circ->path_state),
                circuit_purpose_to_string(circ->_base.purpose),
                circuit_state_to_string(circ->_base.state),
                rate_msg);
+        tor_free(rate_msg);
       }
       tor_fragile_assert();
     }
@@ -2685,11 +2686,12 @@ pathbias_count_first_hop(origin_circuit_t *circ)
                                      approx_time()))) {
         log_info(LD_BUG,
                 "Opened circuit is in strange path state %s. "
-                "Circuit is a %s currently %s. %s",
+                "Circuit is a %s currently %s.%s",
                 pathbias_state_to_string(circ->path_state),
                 circuit_purpose_to_string(circ->_base.purpose),
                 circuit_state_to_string(circ->_base.state),
                 rate_msg);
+        tor_free(rate_msg);
       }
     }
 
@@ -2712,11 +2714,12 @@ pathbias_count_first_hop(origin_circuit_t *circ)
                   approx_time()))) {
             log_info(LD_BUG,
                    "Unopened circuit has strange path state %s. "
-                   "Circuit is a %s currently %s. %s",
+                   "Circuit is a %s currently %s.%s",
                    pathbias_state_to_string(circ->path_state),
                    circuit_purpose_to_string(circ->_base.purpose),
                    circuit_state_to_string(circ->_base.state),
                    rate_msg);
+            tor_free(rate_msg);
           }
         }
       } else {
@@ -2724,10 +2727,11 @@ pathbias_count_first_hop(origin_circuit_t *circ)
                 approx_time()))) {
           log_info(LD_BUG,
               "Unopened circuit has no known guard. "
-              "Circuit is a %s currently %s. %s",
+              "Circuit is a %s currently %s.%s",
               circuit_purpose_to_string(circ->_base.purpose),
               circuit_state_to_string(circ->_base.state),
               rate_msg);
+          tor_free(rate_msg);
         }
       }
     }
@@ -2738,12 +2742,13 @@ pathbias_count_first_hop(origin_circuit_t *circ)
                 approx_time()))) {
         log_info(LD_BUG,
             "A %s circuit is in cpath state %d (opened: %d). "
-            "Circuit is a %s currently %s. %s",
+            "Circuit is a %s currently %s.%s",
             pathbias_state_to_string(circ->path_state),
             circ->cpath->state, circ->has_opened,
             circuit_purpose_to_string(circ->_base.purpose),
             circuit_state_to_string(circ->_base.state),
             rate_msg);
+        tor_free(rate_msg);
       }
     }
   }
@@ -2784,12 +2789,13 @@ pathbias_count_success(origin_circuit_t *circ)
               approx_time()))) {
         log_notice(LD_BUG,
                "One-hop circuit has length %d. Path state is %s. "
-               "Circuit is a %s currently %s. %s",
+               "Circuit is a %s currently %s.%s",
                circ->build_state->desired_path_len,
                pathbias_state_to_string(circ->path_state),
                circuit_purpose_to_string(circ->_base.purpose),
                circuit_state_to_string(circ->_base.state),
                rate_msg);
+        tor_free(rate_msg);
       }
       tor_fragile_assert();
     }
@@ -2814,11 +2820,12 @@ pathbias_count_success(origin_circuit_t *circ)
                 approx_time()))) {
           log_info(LD_BUG,
               "Succeeded circuit is in strange path state %s. "
-              "Circuit is a %s currently %s. %s",
+              "Circuit is a %s currently %s.%s",
               pathbias_state_to_string(circ->path_state),
               circuit_purpose_to_string(circ->_base.purpose),
               circuit_state_to_string(circ->_base.state),
               rate_msg);
+          tor_free(rate_msg);
         }
       }
 
@@ -2836,10 +2843,11 @@ pathbias_count_success(origin_circuit_t *circ)
               approx_time()))) {
         log_info(LD_BUG,
             "Completed circuit has no known guard. "
-            "Circuit is a %s currently %s. %s",
+            "Circuit is a %s currently %s.%s",
             circuit_purpose_to_string(circ->_base.purpose),
             circuit_state_to_string(circ->_base.state),
             rate_msg);
+        tor_free(rate_msg);
       }
     }
   } else {
@@ -2848,11 +2856,12 @@ pathbias_count_success(origin_circuit_t *circ)
               approx_time()))) {
         log_info(LD_BUG,
             "Opened circuit is in strange path state %s. "
-            "Circuit is a %s currently %s. %s",
+            "Circuit is a %s currently %s.%s",
             pathbias_state_to_string(circ->path_state),
             circuit_purpose_to_string(circ->_base.purpose),
             circuit_state_to_string(circ->_base.state),
             rate_msg);
+        tor_free(rate_msg);
       }
     }
   }