[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