aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2008-01-14 19:00:28 +0000
committerNick Mathewson <nickm@torproject.org>2008-01-14 19:00:28 +0000
commitd7fb8a34ac027e8ebf53c218fef2fd6a061d88cf (patch)
tree5abb7179792e939cf441a1a4869ab4464896200e
parent581ba51c5ce623e182a8dc5233c13df4e86f3d7b (diff)
downloadtor-d7fb8a34ac027e8ebf53c218fef2fd6a061d88cf.tar.gz
tor-d7fb8a34ac027e8ebf53c218fef2fd6a061d88cf.zip
r17613@catbus: nickm | 2008-01-14 13:52:44 -0500
Do not segfault if symetric key generation somehow fails in crypto_hybrid_encrypt. svn:r13132
-rw-r--r--ChangeLog2
-rw-r--r--src/common/crypto.c6
2 files changed, 6 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index e8eea19b2c..f4408819cf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -45,6 +45,8 @@ Changes in version 0.2.0.16-alpha - 2008-01-??
- Make bridges round geoip info up, not down.
- Avoid a spurious free on base64 failure. Bugfix on 0.1.2.
- Detect more kinds of possible internal error.
+ - Avoid possible segfault if key generation fails in
+ crypto_pk_hybrid_encrypt. Bugfix on 0.2.0.
o Minor features (controller):
- Get NS events working again. (Patch from tup)
diff --git a/src/common/crypto.c b/src/common/crypto.c
index f76eb9d01d..6f7ffd3f58 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -858,8 +858,10 @@ crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env,
crypto_free_cipher_env(cipher);
return outlen + symlen;
err:
- memset(buf, 0, pkeylen);
- tor_free(buf);
+ if (buf) {
+ memset(buf, 0, pkeylen);
+ tor_free(buf);
+ }
if (cipher) crypto_free_cipher_env(cipher);
return -1;
}