tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit 54ad92a240d8fe0997bf833272f041ee42de5ffb
parent e57209dc32996d27fa058125d43391b2bd423826
Author: Nick Mathewson <nickm@torproject.org>
Date:   Mon,  5 Aug 2019 09:59:40 -0400

Merge branch 'maint-0.4.1'

Diffstat:
Achanges/bug30942 | 5+++++
Msrc/core/or/relay.c | 11+++++++++++
2 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/changes/bug30942 b/changes/bug30942 @@ -0,0 +1,4 @@ + o Minor bugfixes (circuit padding): + - Ignore non-padding cells on padding circuits. This addresses various + warning messages from subsystems that were not expecting padding + circuits. Fixes bug 30942; bugfix on 0.4.1.1-alpha. +\ No newline at end of file diff --git a/src/core/or/relay.c b/src/core/or/relay.c @@ -1663,6 +1663,17 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ, if (circpad_handle_padding_negotiated(circ, cell, layer_hint) == 0) circuit_read_valid_data(TO_ORIGIN_CIRCUIT(circ), rh.length); return 0; + } + + /* If this is a padding circuit we don't need to parse any other commands + * than the padding ones. Just drop them to the floor. */ + if (circ->purpose == CIRCUIT_PURPOSE_C_CIRCUIT_PADDING) { + log_info(domain, "Ignored cell (%d) that arrived in padding circuit.", + rh.command); + return 0; + } + + switch (rh.command) { case RELAY_COMMAND_BEGIN: case RELAY_COMMAND_BEGIN_DIR: if (layer_hint &&