From d7fb8a34ac027e8ebf53c218fef2fd6a061d88cf Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 14 Jan 2008 19:00:28 +0000 Subject: [PATCH] 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 --- ChangeLog | 2 ++ src/common/crypto.c | 6 ++++-- 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; }