[master] 983555d Introduce a ZERO_OBJ macro similar to bzero
Dridi Boukelmoune
dridi.boukelmoune at gmail.com
Tue Feb 21 18:06:05 CET 2017
commit 983555d79f8e3372ae4cfa173b4ad3d964994d00
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date: Fri Feb 17 18:06:39 2017 +0100
Introduce a ZERO_OBJ macro similar to bzero
It uses `explicit_bzero` when available and falls back to `memset`
otherwise.
diff --git a/configure.ac b/configure.ac
index 84afb95..b9463f6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -194,6 +194,7 @@ AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>])
AC_CHECK_HEADERS([priv.h])
# Checks for library functions.
+AC_CHECK_FUNCS([explicit_bzero])
AC_CHECK_FUNCS([nanosleep])
AC_CHECK_FUNCS([setppriv])
AC_CHECK_FUNCS([fallocate])
diff --git a/include/miniobj.h b/include/miniobj.h
index 901143f..75093ce 100644
--- a/include/miniobj.h
+++ b/include/miniobj.h
@@ -5,6 +5,12 @@
*
*/
+#if HAVE_EXPLICIT_BZERO
+# define ZERO_OBJ(to, sz) explicit_bzero(to, sz)
+#else
+# define ZERO_OBJ(to, sz) (void)memset(to, 0, sz)
+#endif
+
#define INIT_OBJ(to, type_magic) \
do { \
(void)memset(to, 0, sizeof *to); \
@@ -20,7 +26,7 @@
#define FREE_OBJ(to) \
do { \
- (to)->magic = (0); \
+ ZERO_OBJ(&(to)->magic, sizeof (to)->magic); \
free(to); \
to = NULL; \
} while (0)
More information about the varnish-commit
mailing list