]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
avoid using memset to prevent a compiler optimizing out out calls.
authorNikos Mavrogiannopoulos <nmav@redhat.com>
Wed, 27 Nov 2013 16:23:27 +0000 (17:23 +0100)
committerNikos Mavrogiannopoulos <nmav@redhat.com>
Wed, 27 Nov 2013 16:23:27 +0000 (17:23 +0100)
lib/gnutls_mem.c
lib/gnutls_mem.h

index 2effd1498f007e27ec4b4635ae3a4fc3b85aaf4c..6de2df0e7a52ee8f3ceefd4946695b16e74ebffc 100644 (file)
@@ -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.
index 657d59aa8323f0bbdb6d6d88900c2ac35118bf05..101c9292d26528160465dda21ee4a1e982db0200 100644 (file)
@@ -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