diff options
author | Rich Salz <rsalz@openssl.org> | 2015-04-30 17:57:32 -0400 |
---|---|---|
committer | Rich Salz <rsalz@openssl.org> | 2015-04-30 17:57:32 -0400 |
commit | 4b45c6e52b208deff7da333d1c7f84bcd3986609 (patch) | |
tree | db26f7a51ad582f203dce2145a43c3e0d4376f69 /crypto/mem.c | |
parent | 68dc682499ea3fe27d909c946d7abd39062d6efd (diff) |
free cleanup almost the finale
Add OPENSSL_clear_free which merges cleanse and free.
(Names was picked to be similar to BN_clear_free, etc.)
Removed OPENSSL_freeFunc macro.
Fixed the small simple ones that are left:
CRYPTO_free CRYPTO_free_locked OPENSSL_free_locked
Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'crypto/mem.c')
-rw-r--r-- | crypto/mem.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/crypto/mem.c b/crypto/mem.c index afdce778dc..6176b38d75 100644 --- a/crypto/mem.c +++ b/crypto/mem.c @@ -417,8 +417,7 @@ void *CRYPTO_realloc_clean(void *str, int old_len, int num, const char *file, ret = malloc_ex_func(num, file, line); if (ret) { memcpy(ret, str, old_len); - OPENSSL_cleanse(str, old_len); - free_func(str); + OPENSSL_clear_free(str, old_len); } #ifdef LEVITTE_DEBUG_MEM fprintf(stderr, @@ -443,6 +442,15 @@ void CRYPTO_free(void *str) free_debug_func(NULL, 1); } +void CRYPTO_clear_free(void *str, size_t num) +{ + if (!str) + return; + if (num) + OPENSSL_cleanse(str, num); + CRYPTO_free(str); +} + void *CRYPTO_remalloc(void *a, int num, const char *file, int line) { if (a != NULL) |