]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
conflux: Avoid non fatal assert in CIRCUIT_IS_CONFLUX()
authorDavid Goulet <dgoulet@torproject.org>
Thu, 27 Mar 2025 12:49:40 +0000 (08:49 -0400)
committerDavid Goulet <dgoulet@torproject.org>
Thu, 27 Mar 2025 12:49:40 +0000 (08:49 -0400)
In the circuit_about_to_free(), we clear the circ->conflux object and then we
end up trying to emit an event on the control port which calls
CIRCUIT_IS_CONFLUX() and non fatal assert on the false branch.

Fixes #41037

Signed-off-by: David Goulet <dgoulet@torproject.org>
changes/ticket41037 [new file with mode: 0644]
src/core/or/conflux_util.h

diff --git a/changes/ticket41037 b/changes/ticket41037
new file mode 100644 (file)
index 0000000..c56165a
--- /dev/null
@@ -0,0 +1,3 @@
+  o Minor bugfix (conflux):
+    - Avoid a non fatal assert when describing a conflux circuit on the control
+      port after being prepped to be freed. Fixes bug 41037; bugfix on 0.4.8.15.
index 501ce61d82e88bc31a997be8521f9cbe3446e02d..f259c3a3e145cdb25f7bb1c546d7c7c084ae4678 100644 (file)
@@ -28,8 +28,9 @@ CIRCUIT_IS_CONFLUX(const circuit_t *circ)
       tor_assert_nonfatal(circ->purpose == CIRCUIT_PURPOSE_CONFLUX_LINKED);
     return true;
   } else {
-    tor_assert_nonfatal(circ->purpose != CIRCUIT_PURPOSE_CONFLUX_LINKED);
-    tor_assert_nonfatal(circ->purpose != CIRCUIT_PURPOSE_CONFLUX_UNLINKED);
+    /* We don't assert on purposes here because we can end up in this branch
+     * with circ->conflux being NULL but for a conflux purpose. This happens in
+     * the about_to_free() code path. */
     return false;
   }
 }