diff options
author | Matt Johnston <matt@ucc.asn.au> | 2016-03-16 23:39:39 +0800 |
---|---|---|
committer | Matt Johnston <matt@ucc.asn.au> | 2016-03-16 23:39:39 +0800 |
commit | b647b753e005588065f806f9830928a9b53cdcef (patch) | |
tree | 594fc4194d00744125829ca92e512763fefebb2a | |
parent | 48b855c581db62e4b39ac88cb69d4abf79504ee2 (diff) |
Use memset_s or explicit_bzero
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | dbutil.c | 7 |
2 files changed, 10 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 9fd8ef2..893b904 100644 --- a/configure.ac +++ b/configure.ac @@ -375,6 +375,9 @@ AC_CHECK_FUNCS(logout updwtmp logwtmp) AC_CHECK_HEADERS([mach/mach_time.h]) AC_CHECK_FUNCS(mach_absolute_time) +AC_CHECK_FUNCS(explicit_bzero memset_s) + + AC_ARG_ENABLE(bundled-libtom, [ --enable-bundled-libtom Force using bundled libtomcrypt/libtommath even if a system version exists. --disable-bundled-libtom Force using system libtomcrypt/libtommath, fail if it does not exist. @@ -564,6 +564,12 @@ void * m_realloc(void* ptr, size_t size) { /* Beware of calling this from within dbutil.c - things might get * optimised away */ void m_burn(void *data, unsigned int len) { + +#if defined(HAVE_MEMSET_S) + memset_s(data, len, 0x0, len); +#elif defined(HAVE_EXPLICIT_BZERO) + explicit_bzero(data, len); +#else volatile char *p = data; if (data == NULL) @@ -571,6 +577,7 @@ void m_burn(void *data, unsigned int len) { while (len--) { *p++ = 0x0; } +#endif } |