[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] Backport: another possible patch related to circuit_free an...



Update of /home/or/cvsroot/tor/src/or
In directory moria:/tmp/cvs-serv32128/src/or

Modified Files:
      Tag: tor-0_1_0-patches
	circuitlist.c 
Log Message:
Backport: another possible patch related to circuit_free and memory stomping.

Index: circuitlist.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/circuitlist.c,v
retrieving revision 1.47.2.1
retrieving revision 1.47.2.2
diff -u -d -r1.47.2.1 -r1.47.2.2
--- circuitlist.c	5 Dec 2005 19:52:05 -0000	1.47.2.1
+++ circuitlist.c	14 Dec 2005 19:14:43 -0000	1.47.2.2
@@ -217,6 +217,7 @@
   tor_free(circ->build_state);
   circuit_free_cpath(circ->cpath);
   if (circ->rend_splice) {
+    tor_assert(circ->rend_splice->magic == CIRCUIT_MAGIC);
     circ->rend_splice->rend_splice = NULL;
   }
   /* Remove from map. */
@@ -611,9 +612,11 @@
   circ->marked_for_close = line;
   circ->marked_for_close_file = file;
 
-  if (circ->rend_splice && !circ->rend_splice->marked_for_close) {
-    /* do this after marking this circuit, to avoid infinite recursion. */
-    circuit_mark_for_close(circ->rend_splice);
+  if (circ->rend_splice) {
+    if (!circ->rend_splice->marked_for_close) {
+      /* do this after marking this circuit, to avoid infinite recursion. */
+      circuit_mark_for_close(circ->rend_splice);
+    }
     circ->rend_splice = NULL;
   }
 }