aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2012-07-01 05:32:37 -0400
committerRoger Dingledine <arma@torproject.org>2012-07-01 05:32:37 -0400
commit6061cd584c129eb8b5ed24fb5ce686a0236913e4 (patch)
treecc88fa612f14f9fe667950fa552e4dfadd064b8f /src/or
parented2601f2be0978c37c0ae086b2a8d2f7d94078fc (diff)
parentc32ec9c425e9539bcc8ede95612e2d331c2cc2dd (diff)
downloadtor-6061cd584c129eb8b5ed24fb5ce686a0236913e4.tar
tor-6061cd584c129eb8b5ed24fb5ce686a0236913e4.tar.gz
Merge branch 'maint-0.2.3'
Diffstat (limited to 'src/or')
-rw-r--r--src/or/relay.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/or/relay.c b/src/or/relay.c
index 3f894bfe1..4ab440384 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1265,11 +1265,25 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
case RELAY_COMMAND_SENDME:
if (!conn) {
if (layer_hint) {
+ if (layer_hint->package_window + CIRCWINDOW_INCREMENT >
+ CIRCWINDOW_START_MAX) {
+ log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
+ "Bug/attack: unexpected sendme cell from exit relay. "
+ "Closing circ.");
+ return -END_CIRC_REASON_TORPROTOCOL;
+ }
layer_hint->package_window += CIRCWINDOW_INCREMENT;
log_debug(LD_APP,"circ-level sendme at origin, packagewindow %d.",
layer_hint->package_window);
circuit_resume_edge_reading(circ, layer_hint);
} else {
+ if (circ->package_window + CIRCWINDOW_INCREMENT >
+ CIRCWINDOW_START_MAX) {
+ log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
+ "Bug/attack: unexpected sendme cell from client. "
+ "Closing circ.");
+ return -END_CIRC_REASON_TORPROTOCOL;
+ }
circ->package_window += CIRCWINDOW_INCREMENT;
log_debug(LD_APP,
"circ-level sendme at non-origin, packagewindow %d.",