summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2019-08-05 09:59:40 -0400
committerNick Mathewson <nickm@torproject.org>2019-08-05 09:59:40 -0400
commit54ad92a240d8fe0997bf833272f041ee42de5ffb (patch)
tree7f770be328fbad684725772521830e090742545e
parente57209dc32996d27fa058125d43391b2bd423826 (diff)
parent74c059596527af67f5df38847e86179852bc7005 (diff)
downloadtor-54ad92a240d8fe0997bf833272f041ee42de5ffb.tar.gz
tor-54ad92a240d8fe0997bf833272f041ee42de5ffb.zip
Merge branch 'maint-0.4.1'
-rw-r--r--changes/bug309424
-rw-r--r--src/core/or/relay.c11
2 files changed, 15 insertions, 0 deletions
diff --git a/changes/bug30942 b/changes/bug30942
new file mode 100644
index 0000000000..bd6b2ff581
--- /dev/null
+++ 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
index 9f90a09699..9e691a02b5 100644
--- 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 &&