aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2009-01-06 19:03:15 +0000
committerRoger Dingledine <arma@torproject.org>2009-01-06 19:03:15 +0000
commit68806c7fb7ad070a78fbacc546611cee66471fd8 (patch)
treefc05345c00bb791a5fa9ef40983b31f74ed83c51
parent0955a1b9e1d91f345d26185c9dda2b863381b7e6 (diff)
downloadtor-68806c7fb7ad070a78fbacc546611cee66471fd8.tar.gz
tor-68806c7fb7ad070a78fbacc546611cee66471fd8.zip
When a relay gets a create cell it can't decrypt (e.g. because it's
using the wrong onion key), we were dropping it and letting the client time out. Now actually answer with a destroy cell. Bugfix on 0.0.2pre8. svn:r17970
-rw-r--r--ChangeLog10
-rw-r--r--src/or/cpuworker.c5
2 files changed, 11 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 5e5b783d0f..80b897ec96 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -67,6 +67,10 @@ Changes in version 0.2.1.10-alpha - 2009-01-0?
unencrypted links, we also broke DirPort reachability testing for
bridges. So bridges with a non-zero DirPort were printing spurious
warns to their logs. Bugfix on 0.2.0.16-alpha. Fixes bug 709.
+ - When a relay gets a create cell it can't decrypt (e.g. because it's
+ using the wrong onion key), we were dropping it and letting the
+ client time out. Now actually answer with a destroy cell. Bugfix
+ on 0.0.2pre8.
o Deprecated and removed features:
- The old "tor --version --version" command, which would print out
@@ -1239,9 +1243,9 @@ Changes in version 0.2.0.21-rc - 2008-03-02
Bugfix on 0.2.0.16-alpha. Reported by lodger.
o Minor bugfixes:
- - Fix compilation with OpenSSL 0.9.8 and 0.9.8a. All other supported
- OpenSSL versions should have been working fine. Diagnosis and patch
- from lodger, Karsten Loesing, and Sebastian Hahn. Fixes bug 616.
+ - Fix compilation with OpenSSL 0.9.8 and 0.9.8a. All other supported
+ OpenSSL versions should have been working fine. Diagnosis and patch
+ from lodger, Karsten Loesing, and Sebastian Hahn. Fixes bug 616.
Bugfix on 0.2.0.20-rc.
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index b0d3d1c4c0..88a72886eb 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -274,7 +274,10 @@ cpuworker_main(void *data)
reply_to_proxy, keys, CPATH_KEY_MATERIAL_LEN) < 0) {
/* failure */
log_debug(LD_OR,"onion_skin_server_handshake failed.");
- memset(buf,0,LEN_ONION_RESPONSE); /* send all zeros for failure */
+ *buf = 0; /* indicate failure in first byte */
+ memcpy(buf+1,tag,TAG_LEN);
+ /* send all zeros as answer */
+ memset(buf+1+TAG_LEN, 0, LEN_ONION_RESPONSE-(1+TAG_LEN));
} else {
/* success */
log_debug(LD_OR,"onion_skin_server_handshake succeeded.");