diff options
author | Ivan Zhakov <ivan@apache.org> | 2022-06-29 14:46:27 +0000 |
---|---|---|
committer | Ivan Zhakov <ivan@apache.org> | 2022-06-29 14:46:27 +0000 |
commit | 166a06a11e80a5479a806ebb5a213d1c3e547fc7 (patch) | |
tree | 020cb3a94ba821cb6147bd6810ddc4cbe3e08aaf /crypto/apr_crypto.c | |
parent | 9aab4125498301f37c769e761cdababdab196b63 (diff) | |
parent | 4000041d0ea6f7fccea67d2ac3d8205270b1cf1a (diff) | |
download | apr-thread-name.tar.gz |
On 'thread-name' branch: Merge changes from trunk.thread-name
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/thread-name@1902353 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'crypto/apr_crypto.c')
-rw-r--r-- | crypto/apr_crypto.c | 31 |
1 files changed, 2 insertions, 29 deletions
diff --git a/crypto/apr_crypto.c b/crypto/apr_crypto.c index 7572a5904..fa08092e5 100644 --- a/crypto/apr_crypto.c +++ b/crypto/apr_crypto.c @@ -120,7 +120,7 @@ static apr_status_t crypto_clear(void *ptr) { apr_crypto_clear_t *clear = (apr_crypto_clear_t *)ptr; - apr_crypto_memzero(clear->buffer, clear->size); + apr_memzero_explicit(clear->buffer, clear->size); clear->buffer = NULL; clear->size = 0; @@ -141,36 +141,9 @@ APR_DECLARE(apr_status_t) apr_crypto_clear(apr_pool_t *pool, return APR_SUCCESS; } -#if defined(HAVE_WEAK_SYMBOLS) -void apr__memzero_explicit(void *buffer, apr_size_t size); - -__attribute__ ((weak)) -void apr__memzero_explicit(void *buffer, apr_size_t size) -{ - memset(buffer, 0, size); -} -#endif - APR_DECLARE(apr_status_t) apr_crypto_memzero(void *buffer, apr_size_t size) { -#if defined(WIN32) - SecureZeroMemory(buffer, size); -#elif defined(HAVE_MEMSET_S) - if (size) { - return memset_s(buffer, (rsize_t)size, 0, (rsize_t)size); - } -#elif defined(HAVE_EXPLICIT_BZERO) - explicit_bzero(buffer, size); -#elif defined(HAVE_WEAK_SYMBOLS) - apr__memzero_explicit(buffer, size); -#else - apr_size_t i; - volatile unsigned char *volatile ptr = buffer; - for (i = 0; i < size; ++i) { - ptr[i] = 0; - } -#endif - return APR_SUCCESS; + return apr_memzero_explicit(buffer, size); } APR_DECLARE(int) apr_crypto_equals(const void *buf1, const void *buf2, |