Some OS define memset_s instead of explicit_bzero. Use it.
* lib/explicit_bzero.c (__STDC_WANT_LIB_EXT1__): Define.
(explicit_bzero): Use memset_s when available.
* m4/explicit_bzero.m4 (gl_PREREQ_EXPLICIT_BZERO): Test for memset_s.
Signed-off-by: Bastien Roucariès <rouca@debian.org>
+2020-04-13 Bastien Roucariès <rouca@debian.org>
+
+ explicit_bzero: Use memset_s() when available.
+ * lib/explicit_bzero.c (__STDC_WANT_LIB_EXT1__): Define.
+ (explicit_bzero): Use memset_s when available.
+ * m4/explicit_bzero.m4 (gl_PREREQ_EXPLICIT_BZERO): Test for memset_s.
+
2020-04-13 Bastien Roucariès <rouca@debian.org>
explicit_bzero tests: Fix test failure on OpenBSD 6.5.
# include <config.h>
#endif
+/* memset_s need this define */
+#if HAVE_MEMSET_S
+# define __STDC_WANT_LIB_EXT1__ 1
+#endif
+
#include <string.h>
#if _LIBC
{
#ifdef HAVE_EXPLICIT_MEMSET
explicit_memset (s, 0, len);
+#elif HAVE_MEMSET_S
+ (void) memset_s (s, len, '\0', len);
#else
memset (s, '\0', len);
# if defined __GNUC__ && !defined __clang__
AC_DEFUN([gl_PREREQ_EXPLICIT_BZERO],
[
AC_CHECK_FUNCS([explicit_memset])
+ AC_CHECK_FUNCS_ONCE([memset_s])
])