From 1d8c2b5d17c36de9739c947ea93d6c3ecf0f3d08 Mon Sep 17 00:00:00 2001 From: beck <> Date: Thu, 17 Apr 2014 16:30:59 +0000 Subject: remove OPENSSL_realloc_clean usage here - replace with intrinsics to make it obvious what should happen. ok tedu@ --- src/lib/libcrypto/buffer/buffer.c | 11 +++++++---- src/lib/libssl/src/crypto/buffer/buffer.c | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/lib/libcrypto/buffer/buffer.c b/src/lib/libcrypto/buffer/buffer.c index 4bd55c04ae..a50c30a348 100644 --- a/src/lib/libcrypto/buffer/buffer.c +++ b/src/lib/libcrypto/buffer/buffer.c @@ -153,10 +153,13 @@ BUF_MEM_grow_clean(BUF_MEM *str, size_t len) return 0; } n = (len + 3) / 3 * 4; - if (str->data == NULL) - ret = malloc(n); - else - ret = OPENSSL_realloc_clean(str->data, str->max, n); + ret = malloc(n); + /* we're not shrinking - that case returns above */ + if ((ret != NULL) && (str->data != NULL)) { + memcpy(ret, str->data, str->max); + explicit_bzero(str->data, str->max); + free(str->data); + } if (ret == NULL) { BUFerr(BUF_F_BUF_MEM_GROW_CLEAN, ERR_R_MALLOC_FAILURE); len = 0; diff --git a/src/lib/libssl/src/crypto/buffer/buffer.c b/src/lib/libssl/src/crypto/buffer/buffer.c index 4bd55c04ae..a50c30a348 100644 --- a/src/lib/libssl/src/crypto/buffer/buffer.c +++ b/src/lib/libssl/src/crypto/buffer/buffer.c @@ -153,10 +153,13 @@ BUF_MEM_grow_clean(BUF_MEM *str, size_t len) return 0; } n = (len + 3) / 3 * 4; - if (str->data == NULL) - ret = malloc(n); - else - ret = OPENSSL_realloc_clean(str->data, str->max, n); + ret = malloc(n); + /* we're not shrinking - that case returns above */ + if ((ret != NULL) && (str->data != NULL)) { + memcpy(ret, str->data, str->max); + explicit_bzero(str->data, str->max); + free(str->data); + } if (ret == NULL) { BUFerr(BUF_F_BUF_MEM_GROW_CLEAN, ERR_R_MALLOC_FAILURE); len = 0; -- cgit v1.2.3-55-g6feb