[PATCH v1] explicit_bzero.c: using explicit_memset on NetBSD
Started by David CARLIERover 5 years ago2 messages
Thanks.
Regards.
Attachments:
0001-explicit_bzero.c-uses-explicit_memset-for-NetBSD.patchapplication/octet-stream; name=0001-explicit_bzero.c-uses-explicit_memset-for-NetBSD.patchDownload
From 20d36249e791ac8a7f31725e3e2b54ec5270ac73 Mon Sep 17 00:00:00 2001
From: David Carlier <devnexen@gmail.com>
Date: Sun, 30 Aug 2020 12:57:58 +0000
Subject: [PATCH] explicit_bzero.c: uses explicit_memset for NetBSD.
It provides the same guarantee as explicit_bzero to avoid compiler optimisation.
Signed-off-by: David Carlier <devnexen@gmail.com>
---
configure | 13 +++++++++++++
configure.ac | 1 +
src/include/pg_config.h.in | 3 +++
src/port/explicit_bzero.c | 8 ++++++++
4 files changed, 25 insertions(+)
diff --git a/configure b/configure
index cb8fbe1051..c3da20c050 100755
--- a/configure
+++ b/configure
@@ -15735,6 +15735,19 @@ esac
fi
+ac_fn_c_check_func "$LINENO" "explicit_memset" "ac_cv_func_explicit_memset"
+if test "x$ac_cv_func_explicit_memset" = xyes; then :
+ $as_echo "#define HAVE_EXPLICIT_MEMSET 1" >>confdefs.h
+
+else
+ case " $LIBOBJS " in
+ *" explicit_memset.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS explicit_memset.$ac_objext"
+ ;;
+esac
+
+fi
+
ac_fn_c_check_func "$LINENO" "fls" "ac_cv_func_fls"
if test "x$ac_cv_func_fls" = xyes; then :
$as_echo "#define HAVE_FLS 1" >>confdefs.h
diff --git a/configure.ac b/configure.ac
index eb2c731b58..38e59a7eee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1721,6 +1721,7 @@ fi
AC_REPLACE_FUNCS(m4_normalize([
dlopen
explicit_bzero
+ explicit_memset
fls
getopt
getpeereid
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index fb270df678..07ad2bcff5 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -185,6 +185,9 @@
/* Define to 1 if you have the `explicit_bzero' function. */
#undef HAVE_EXPLICIT_BZERO
+/* Define to 1 if you have the `explicit_memset' function. */
+#undef HAVE_EXPLICIT_MEMSET
+
/* Define to 1 if you have the `fdatasync' function. */
#undef HAVE_FDATASYNC
diff --git a/src/port/explicit_bzero.c b/src/port/explicit_bzero.c
index 6bd8b0dd9d..214ba4aa26 100644
--- a/src/port/explicit_bzero.c
+++ b/src/port/explicit_bzero.c
@@ -22,6 +22,14 @@ explicit_bzero(void *buf, size_t len)
(void) memset_s(buf, len, 0, len);
}
+#elif defined(HAVE_EXPLICIT_MEMSET)
+
+void
+explicit_bzero(void *buf, size_t len)
+{
+ (void) explicit_memset(buf, 0, len);
+}
+
#elif defined(WIN32)
void
--
2.27.0
Re: [PATCH v1] explicit_bzero.c: using explicit_memset on NetBSD
On Sun, Aug 30, 2020 at 02:03:32PM +0100, David CARLIER wrote:
Thanks.
During the addition of explicit_bzero(), there was an agreement to use
memset_s(), as it is blessed by the standard:
/messages/by-id/20190717211931.GA906@alvherre.pgsql
So what would be the advantage of explicit_memset() knowing that
NetBSD has memset_s()? This also means that your patch is a no-op for
NetBSD as HAVE_MEMSET_S would be set.
--
Michael