Quellcode durchsuchen

Avoid double-free on tor-resolve failure

svn:r3567
Nick Mathewson vor 20 Jahren
Ursprung
Commit
a64b03a4fd
1 geänderte Dateien mit 3 neuen und 1 gelöschten Zeilen
  1. 3 1
      src/or/connection_edge.c

+ 3 - 1
src/or/connection_edge.c

@@ -906,8 +906,10 @@ int connection_exit_begin_resolve(cell_t *cell, circuit_t *circ) {
 
 
   /* send it off to the gethostbyname farm */
   /* send it off to the gethostbyname farm */
   switch (dns_resolve(dummy_conn)) {
   switch (dns_resolve(dummy_conn)) {
-    case 1: /* The result was cached; a resolved cell was sent. */
     case -1: /* Impossible to resolve; a resolved cell was sent. */
     case -1: /* Impossible to resolve; a resolved cell was sent. */
+      /* Connection freed; don't touch it. */
+      return 0;
+    case 1: /* The result was cached; a resolved cell was sent. */
       connection_free(dummy_conn);
       connection_free(dummy_conn);
       return 0;
       return 0;
     case 0: /* resolve added to pending list */
     case 0: /* resolve added to pending list */