From: Nikos Mavrogiannopoulos Date: Wed, 27 Nov 2013 16:23:27 +0000 (+0100) Subject: avoid using memset to prevent a compiler optimizing out out calls. X-Git-Tag: gnutls_3_3_0pre0~520^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a85161b486e594a63670a832cc9bc9e77e4733fc;p=thirdparty%2Fgnutls.git avoid using memset to prevent a compiler optimizing out out calls. --- diff --git a/lib/gnutls_mem.c b/lib/gnutls_mem.c index 2effd1498f..6de2df0e7a 100644 --- a/lib/gnutls_mem.c +++ b/lib/gnutls_mem.c @@ -82,6 +82,13 @@ char *_gnutls_strdup(const char *str) return ret; } +void *_gnutls_bzero(void *mem, size_t size) +{ + volatile uint8_t *p = mem; + while (size--) + *p++ = 0; + return mem; +} #if 0 /* don't use them. They are included for documentation. diff --git a/lib/gnutls_mem.h b/lib/gnutls_mem.h index 657d59aa83..101c9292d2 100644 --- a/lib/gnutls_mem.h +++ b/lib/gnutls_mem.h @@ -37,12 +37,14 @@ svoid *gnutls_secure_calloc(size_t nmemb, size_t size); void *_gnutls_calloc(size_t nmemb, size_t size); char *_gnutls_strdup(const char *); +void *_gnutls_bzero(void *v, size_t n); + #define zrelease_mpi_key(mpi) if (*mpi!=NULL) { \ _gnutls_mpi_clear(*mpi); \ _gnutls_mpi_release(mpi); \ } -#define zeroize_key(x, size) memset(x, 0, size) +#define zeroize_key(x, size) _gnutls_bzero(x, size) #ifdef ENABLE_FIPS140 # define zeroize_temp_key zeroize_key