summaryrefslogtreecommitdiffstats
path: root/crypto/mem.c
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2016-04-21 15:30:17 +0100
committerDr. Stephen Henson <steve@openssl.org>2016-04-21 23:56:44 +0100
commit2ac7753c107e71bfdcaa08b18eb4e6683292be57 (patch)
tree805139bf04a817d7e3f2f4a6ebea867f140708b3 /crypto/mem.c
parente38bd9489aa2c7d87105f388027ba5a84c9949f9 (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.c5
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;
}