From: George Kadianakis Date: Fri, 18 May 2012 12:22:03 +0000 (+0300) Subject: Extract data from DESTROY cell _after_ protocol violation checks. X-Git-Tag: tor-0.2.3.16-alpha~45^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=153b9892f056f2ffa4b1f4a5846ca329d6982805;p=thirdparty%2Ftor.git Extract data from DESTROY cell _after_ protocol violation checks. --- 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 */