From 153b9892f056f2ffa4b1f4a5846ca329d6982805 Mon Sep 17 00:00:00 2001 From: George Kadianakis Date: Fri, 18 May 2012 15:22:03 +0300 Subject: [PATCH] Extract data from DESTROY cell _after_ protocol violation checks. --- src/or/command.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/or/command.c b/src/or/command.c index fb281a7f93..ca3c341037 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -591,7 +591,6 @@ command_process_destroy_cell(cell_t *cell, or_connection_t *conn) int reason; circ = circuit_get_by_circid_orconn(cell->circ_id, conn); - reason = (uint8_t)cell->payload[0]; if (!circ) { log_info(LD_OR,"unknown circuit %d on connection from %s:%d. Dropping.", cell->circ_id, conn->_base.address, conn->_base.port); @@ -599,6 +598,8 @@ command_process_destroy_cell(cell_t *cell, or_connection_t *conn) } log_debug(LD_OR,"Received for circID %d.",cell->circ_id); + reason = (uint8_t)cell->payload[0]; + if (!CIRCUIT_IS_ORIGIN(circ) && cell->circ_id == TO_OR_CIRCUIT(circ)->p_circ_id) { /* the destroy came from behind */