Pārlūkot izejas kodu

Don't leak an extend_info_t in rend_client_any_intro_points_usable

Robert Ransom 14 gadi atpakaļ
vecāks
revīzija
65a0d7e7ef
2 mainītis faili ar 14 papildinājumiem un 2 dzēšanām
  1. 6 0
      changes/bug4424
  2. 8 2
      src/or/rendclient.c

+ 6 - 0
changes/bug4424

@@ -0,0 +1,6 @@
+  o Major bugfixes
+
+    - Don't leak memory when we check whether a hidden service
+      descriptor has any usable introduction points left.  Fixes bug
+      4424.  Bugfix on 0.2.2.25-alpha; found by frosty_un.
+

+ 8 - 2
src/or/rendclient.c

@@ -952,8 +952,14 @@ rend_client_get_random_intro_impl(const rend_cache_entry_t *entry,
 int
 rend_client_any_intro_points_usable(const rend_cache_entry_t *entry)
 {
-  return rend_client_get_random_intro_impl(
-          entry, get_options()->StrictNodes, 0) != NULL;
+  extend_info_t *extend_info =
+    rend_client_get_random_intro_impl(entry, get_options()->StrictNodes, 0);
+  int rv = extend_info != NULL;
+
+  if (extend_info != NULL)
+    extend_info_free(extend_info);
+
+  return rv;
 }
 
 /** Client-side authorizations for hidden services; map of onion address to