Procházet zdrojové kódy

Avoid segfault when accessing hidden service.

Karsten Loesing před 14 roky
rodič
revize
dd8f16beb5
2 změnil soubory, kde provedl 5 přidání a 1 odebrání
  1. 3 0
      ChangeLog
  2. 2 1
      src/or/rendclient.c

+ 3 - 0
ChangeLog

@@ -23,6 +23,9 @@ Changes in version 0.2.1.20 - 2009-??-??
       a wrong clock. Instead, we should only inform the controller when
       it's a trusted authority that claims our clock is wrong. Bugfix
       on 0.2.0.20-rc; starts to fix bug 1074. Reported by SwissTorExit.
+    - Avoid segfault in rare cases when finishing an introduction circuit
+      as a client and finding out that we don't have an introduction key
+      for it. Fixes bug 1073. Reported by Aaron Swartz.
 
 
 Changes in version 0.2.1.19 - 2009-07-28

+ 2 - 1
src/or/rendclient.c

@@ -94,6 +94,7 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
       }
     });
     if (!intro_key) {
+      int num_intro_points = smartlist_len(entry->parsed->intro_nodes);
       if (rend_cache_lookup_entry(introcirc->rend_data->onion_address,
           0, &entry) > 0) {
         log_warn(LD_BUG, "We have both a v0 and a v2 rend desc for this "
@@ -109,7 +110,7 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
       } else {
         log_warn(LD_BUG, "Internal error: could not find intro key; we "
                  "only have a v2 rend desc with %d intro points.",
-                 smartlist_len(entry->parsed->intro_nodes));
+                 num_intro_points);
         goto err;
       }
     }