summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2012-07-06 08:57:29 -0400
committerRoger Dingledine <arma@torproject.org>2012-07-06 08:57:29 -0400
commit27ec0248d2460cdfc52462d313272c206ab46f02 (patch)
treef39707c07e960c0f8c72903a1f3384f66282964e
parent62c1311b3ab57c61488ecfc8c94fabb5f2c70e6e (diff)
parent419f541aa737d3ab230ec2595d0614e2d94a5e44 (diff)
downloadtor-27ec0248d2460cdfc52462d313272c206ab46f02.tar.gz
tor-27ec0248d2460cdfc52462d313272c206ab46f02.zip
Merge remote-tracking branch 'nickm/bug6271_part_a' into maint-0.2.3
-rw-r--r--changes/bug62717
-rw-r--r--src/or/relay.c7
2 files changed, 13 insertions, 1 deletions
diff --git a/changes/bug6271 b/changes/bug6271
new file mode 100644
index 0000000000..06b129f73f
--- /dev/null
+++ b/changes/bug6271
@@ -0,0 +1,7 @@
+ o Major bugfixes
+
+ - Fix a bug handling SENDME cells on nonexistent streams that
+ could result in bizarre window values. Report and patch
+ contributed pseudymously. Fixes part of bug 6271. This bug
+ was introduced before the first Tor release, in svn commit
+ r152.
diff --git a/src/or/relay.c b/src/or/relay.c
index 3f894bfe1f..3e418ea13f 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1263,7 +1263,7 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
"'connected' received, no conn attached anymore. Ignoring.");
return 0;
case RELAY_COMMAND_SENDME:
- if (!conn) {
+ if (!rh.stream_id) {
if (layer_hint) {
layer_hint->package_window += CIRCWINDOW_INCREMENT;
log_debug(LD_APP,"circ-level sendme at origin, packagewindow %d.",
@@ -1278,6 +1278,11 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
}
return 0;
}
+ if (!conn) {
+ log_info(domain,"sendme cell dropped, unknown stream (streamid %d).",
+ rh.stream_id);
+ return 0;
+ }
conn->package_window += STREAMWINDOW_INCREMENT;
log_debug(domain,"stream-level sendme, packagewindow now %d.",
conn->package_window);