diff --git a/configure.ac b/configure.ac --- a/configure.ac +++ b/configure.ac @@ -1807,7 +1807,7 @@ AC_CHECK_FUNCS(strerror rand mmap getpagesize sysconf waitpid wait4) AC_CHECK_FUNCS(gettimeofday getrusage gethrtime clock_gettime syslog) AC_CHECK_FUNCS(syscall fcntl ftruncate flockfile) -AC_CHECK_FUNCS(explicit_bzero getentropy) +AC_CHECK_FUNCS(explicit_bzero explicit_memset getentropy) GNUPG_CHECK_MLOCK diff --git a/src/misc.c b/src/misc.c --- a/src/misc.c +++ b/src/misc.c @@ -516,6 +516,8 @@ */ #ifdef HAVE_EXPLICIT_BZERO explicit_bzero (ptr, len); +#elif defined(HAVE_EXPLICIT_MEMSET) + explicit_memset (ptr, 0, len); #else memset_ptr (ptr, 0, len); #endif @@ -531,6 +533,12 @@ explicit_bzero (ptr, len); return; } +#elif defined(HAVE_EXPLICIT_MEMSET) + if (set == 0) + { + explicit_memset (ptr, 0, len); + return; + } #endif memset_ptr (ptr, set, len);