diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2016-04-21 15:30:17 +0100 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2016-04-21 23:56:44 +0100 |
commit | 2ac7753c107e71bfdcaa08b18eb4e6683292be57 (patch) | |
tree | 805139bf04a817d7e3f2f4a6ebea867f140708b3 /crypto/mem.c | |
parent | e38bd9489aa2c7d87105f388027ba5a84c9949f9 (diff) |
Fix CRYPTO_clear_realloc() bug.
If allocation in CRYPTO_clear_realloc() fails don't free up the original
buffer: this is consistent with the behaviour of realloc(3) and is expected
in other places in OpenSSL.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
Diffstat (limited to 'crypto/mem.c')
-rw-r--r-- | crypto/mem.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/crypto/mem.c b/crypto/mem.c index 16ef64c6fe..9bdd5043a9 100644 --- a/crypto/mem.c +++ b/crypto/mem.c @@ -201,9 +201,10 @@ void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num, } ret = CRYPTO_malloc(num, file, line); - if (ret) + if (ret != NULL) { memcpy(ret, str, old_len); - CRYPTO_clear_free(str, old_len, file, line); + CRYPTO_clear_free(str, old_len, file, line); + } return ret; } |