commit 46161b194f7a0ca7a2c83c36d1eb01f8110d80a1 parent 4edf0bf9601e725ae349f6da97da174b689a5f74 Author: David Goulet <dgoulet@torproject.org> Date: Thu, 27 Mar 2025 08:49:40 -0400 conflux: Avoid non fatal assert in CIRCUIT_IS_CONFLUX() 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> Diffstat:
| A | changes/ticket41037 | | | 3 | +++ |
| M | src/core/or/conflux_util.h | | | 5 | +++-- |
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/changes/ticket41037 b/changes/ticket41037 @@ -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. diff --git a/src/core/or/conflux_util.h b/src/core/or/conflux_util.h @@ -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; } }