summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2018-08-07 16:27:19 +0200
committerNikos Mavrogiannopoulos <nmav@redhat.com>2018-08-08 16:32:19 +0200
commit1f6a8edbc451f9fec0cbbf281673a0ef67c3fbdd (patch)
tree9f50ac6c9b68d8677744d3e7b565378927578886 /lib
parent3aeb9c1443f74ee1107772608afbc1041d65c958 (diff)
downloadgnutls-1f6a8edbc451f9fec0cbbf281673a0ef67c3fbdd.tar.gz
gnutls_memset: use explicit_bzero
That is, use the glibc function when available and the second parameter is zero. Resolves #230 Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/safe-memfuncs.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/lib/safe-memfuncs.c b/lib/safe-memfuncs.c
index e5673e5737..5e413c9486 100644
--- a/lib/safe-memfuncs.c
+++ b/lib/safe-memfuncs.c
@@ -18,11 +18,8 @@
*
*/
-#ifdef TEST_SAFE_MEMSET
-# include <string.h>
-#else
-# include "gnutls_int.h"
-#endif
+#include "gnutls_int.h"
+#include <string.h>
/**
* gnutls_memset:
@@ -33,14 +30,18 @@
* This function will operate similarly to memset(), but will
* not be optimized out by the compiler.
*
- * Returns: void.
- *
* Since: 3.4.0
**/
void gnutls_memset(void *data, int c, size_t size)
{
- volatile unsigned volatile_zero = 0;
+ volatile unsigned volatile_zero;
volatile char *vdata = (volatile char*)data;
+#ifdef HAVE_EXPLICIT_BZERO
+ if (c == 0) {
+ explicit_bzero(data, size);
+ }
+#endif
+ volatile_zero = 0;
/* This is based on a nice trick for safe memset,
* sent by David Jacobson in the openssl-dev mailing list.