[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] [tor/release-0.2.2] Correctly detect BIO_new failures
commit e80bdfb4a02c6f8313baec6e9b00ec3baac3da87
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Tue Jan 25 18:26:49 2011 -0500
Correctly detect BIO_new failures
This bug was noticed by cypherpunks; fixes bug 2378.
Bugfix on svn commit r110.
---
changes/bug2378 | 5 +++++
src/common/crypto.c | 6 ++++++
2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/changes/bug2378 b/changes/bug2378
index a3ae196..2279688 100644
--- a/changes/bug2378
+++ b/changes/bug2378
@@ -1,3 +1,8 @@
+ o Minor bugfixes
+ - Correctly detect failure to allocate an OpenSSL BIO. Fixes bug 2378;
+ found by "cypherpunks". This bug was introduced before the
+ first Tor release, in svn commit r110.
+
o Minor code simplifications and refactorings
- Always treat failure to allocate an RSA key as an unrecoverable
allocation error.
diff --git a/src/common/crypto.c b/src/common/crypto.c
index 09d7fc8..cfbc002 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -524,6 +524,8 @@ crypto_pk_read_private_key_from_string(crypto_pk_env_t *env,
/* Create a read-only memory BIO, backed by the string 's' */
b = BIO_new_mem_buf((char*)s, (int)len);
+ if (!b)
+ return -1;
if (env->key)
RSA_free(env->key);
@@ -584,6 +586,8 @@ crypto_pk_write_key_to_string_impl(crypto_pk_env_t *env, char **dest,
tor_assert(dest);
b = BIO_new(BIO_s_mem()); /* Create a memory BIO */
+ if (!b)
+ return -1;
/* Now you can treat b as if it were a file. Just use the
* PEM_*_bio_* functions instead of the non-bio variants.
@@ -651,6 +655,8 @@ crypto_pk_read_public_key_from_string(crypto_pk_env_t *env, const char *src,
tor_assert(len<INT_MAX);
b = BIO_new(BIO_s_mem()); /* Create a memory BIO */
+ if (!b)
+ return -1;
BIO_write(b, src, (int)len);