From: Nick Mathewson Date: Tue, 25 Jan 2011 23:26:49 +0000 (-0500) Subject: Correctly detect BIO_new failures X-Git-Tag: tor-0.2.2.23-alpha~11^2~15^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e80bdfb4a02c6f8313baec6e9b00ec3baac3da87;p=thirdparty%2Ftor.git Correctly detect BIO_new failures This bug was noticed by cypherpunks; fixes bug 2378. Bugfix on svn commit r110. --- diff --git a/changes/bug2378 b/changes/bug2378 index a3ae196dc2..227968869f 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 09d7fc886b..cfbc002dca 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