diff options
author | George Kadianakis <desnacked@riseup.net> | 2012-04-19 00:47:37 +0200 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-04-18 22:26:06 -0400 |
commit | 2d276ab9d9193d5152fe2599e9d39f2df9ea7d43 (patch) | |
tree | 385f6895cdb60ea6b0e04ae2209f559dc0fd8549 /src | |
parent | 86c4b750da6f25a0fb5291146dd60f151ae5ad7d (diff) | |
download | tor-2d276ab9d9193d5152fe2599e9d39f2df9ea7d43.tar tor-2d276ab9d9193d5152fe2599e9d39f2df9ea7d43.tar.gz |
rend_service_introduce(): do protocol violation check before anything else.
(Cherry-picked from 6ba13e4 by nickm)
Diffstat (limited to 'src')
-rw-r--r-- | src/or/rendservice.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/or/rendservice.c b/src/or/rendservice.c index bb3aacd92..a1daa8a55 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -909,13 +909,6 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request, time_t *access_time; or_options_t *options = get_options(); - tor_assert(circuit->rend_data); - - base32_encode(serviceid, REND_SERVICE_ID_LEN_BASE32+1, - circuit->rend_data->rend_pk_digest, REND_SERVICE_ID_LEN); - 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.", @@ -923,6 +916,13 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request, return -1; } + tor_assert(circuit->rend_data); + + base32_encode(serviceid, REND_SERVICE_ID_LEN_BASE32+1, + circuit->rend_data->rend_pk_digest, REND_SERVICE_ID_LEN); + log_info(LD_REND, "Received INTRODUCE2 cell for service %s on circ %d.", + escaped(serviceid), circuit->_base.n_circ_id); + /* 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) { |