Check ewma_enabled before doing circ-has-become-inactive check

This avoids a possible crash bug in flush_from_first_active_circuit.

Fixes bug 6341; bugfix on 0.2.2.7-alpha.

Bug reported and fixed by a pseudonymous user on IRC.
This commit is contained in:
Nick Mathewson 2012-07-11 09:57:58 -04:00
parent b355ddb20f
commit 5ade278605
2 changed files with 6 additions and 1 deletions

5
changes/bug6341 Normal file
View File

@ -0,0 +1,5 @@
o Major bugfixes:
- Fix a possible crash bug when checking for deactivated circuits
in connection_or_flush_from_first_active_circuit(). Fixes bug
6341; bugfix on 0.2.2.7-alpha. Bug report and fix received
pseudonymously.

View File

@ -2464,7 +2464,7 @@ connection_or_flush_from_first_active_circuit(or_connection_t *conn, int max,
tor_assert(tmp == cell_ewma);
add_cell_ewma_to_conn(conn, cell_ewma);
}
if (circ != conn->active_circuits) {
if (!ewma_enabled && circ != conn->active_circuits) {
/* If this happens, the current circuit just got made inactive by
* a call in connection_write_to_buf(). That's nothing to worry about:
* circuit_make_inactive_on_conn() already advanced conn->active_circuits