mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 20:33:31 +01:00
Correctly detect BIO_new failures
This bug was noticed by cypherpunks; fixes bug 2378. Bugfix on svn commit r110.
This commit is contained in:
parent
bfde636aad
commit
e80bdfb4a0
@ -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.
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user