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; }