Преглед изворни кода

Avoid double-free on tor-resolve failure

svn:r3567
Nick Mathewson пре 20 година
родитељ
комит
a64b03a4fd
1 измењених фајлова са 3 додато и 1 уклоњено
  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 */
   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. */
+      /* Connection freed; don't touch it. */
+      return 0;
+    case 1: /* The result was cached; a resolved cell was sent. */
       connection_free(dummy_conn);
       return 0;
     case 0: /* resolve added to pending list */