summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-04-18 22:30:02 -0400
committerNick Mathewson <nickm@torproject.org>2012-04-18 22:30:02 -0400
commite9dae1ff2e147d2b74fb1ce2836fb9c42f227af4 (patch)
tree74e72b9a7c737110f12f4a9d4cd6b8ad30cd3bfb
parent4db5a1e151a7aa69f2682854b021d1f9bb0f5caf (diff)
parent2d276ab9d9193d5152fe2599e9d39f2df9ea7d43 (diff)
downloadtor-e9dae1ff2e147d2b74fb1ce2836fb9c42f227af4.tar.gz
tor-e9dae1ff2e147d2b74fb1ce2836fb9c42f227af4.zip
Merge remote-tracking branch 'origin/maint-0.2.2'
Conflicts: src/or/rendservice.c Conflicts were due to new NON_ANONYMOUS_MODE_ENABLED tor2web code; I think I resolved them correctly.
-rw-r--r--changes/bug56445
-rw-r--r--src/or/rendservice.c14
2 files changed, 12 insertions, 7 deletions
diff --git a/changes/bug5644 b/changes/bug5644
new file mode 100644
index 0000000000..a390eba996
--- /dev/null
+++ b/changes/bug5644
@@ -0,0 +1,5 @@
+ o Major bugfixes
+ - Prevent a client-side assertion failure when receiving an
+ INTRODUCE2 cell by an exit relay, in a general purpose
+ circuit. Fixes bug 5644; bugfix on tor-0.2.1.6-alpha
+
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 30b0d88af6..44e6697018 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -1064,6 +1064,13 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
time_t *access_time;
const or_options_t *options = get_options();
+ if (circuit->_base.purpose != CIRCUIT_PURPOSE_S_INTRO) {
+ log_warn(LD_PROTOCOL,
+ "Got an INTRODUCE2 over a non-introduction circuit %d.",
+ circuit->_base.n_circ_id);
+ return -1;
+ }
+
#ifndef NON_ANONYMOUS_MODE_ENABLED
tor_assert(!(circuit->build_state->onehop_tunnel));
#endif
@@ -1074,13 +1081,6 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
log_info(LD_REND, "Received INTRODUCE2 cell for service %s on circ %d.",
escaped(serviceid), circuit->_base.n_circ_id);
- if (circuit->_base.purpose != CIRCUIT_PURPOSE_S_INTRO) {
- log_warn(LD_PROTOCOL,
- "Got an INTRODUCE2 over a non-introduction circuit %d.",
- circuit->_base.n_circ_id);
- return -1;
- }
-
/* min key length plus digest length plus nickname length */
if (request_len < DIGEST_LEN+REND_COOKIE_LEN+(MAX_NICKNAME_LEN+1)+
DH_KEY_LEN+42) {