diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-04-18 22:30:02 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-04-18 22:30:02 -0400 |
commit | e9dae1ff2e147d2b74fb1ce2836fb9c42f227af4 (patch) | |
tree | 74e72b9a7c737110f12f4a9d4cd6b8ad30cd3bfb | |
parent | 4db5a1e151a7aa69f2682854b021d1f9bb0f5caf (diff) | |
parent | 2d276ab9d9193d5152fe2599e9d39f2df9ea7d43 (diff) | |
download | tor-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/bug5644 | 5 | ||||
-rw-r--r-- | src/or/rendservice.c | 14 |
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) { |