Subject: use bzero() instead of memset_s() lib/replace/replace.h header defines ZERO_STRUCT macro which uses memset_s() function (which is similar to memset() but can not be optimized out by the compiler). Glibc has bzero() with similar property, while memset_s() have is implemented in lib/replace/replace.c, - this way, some binaries needlessly link with libreplace-samba4 just to get rep_memset_s() symbol. By using bzero() instead, this endless linkage is eliminated, so we can package, for example, libldb (which uses ZERO_STRUCT) without it linking to libreplace-samba4. Note: actually using explicit_bzero() so it is not optimized out by the compiler - this is the original goal of using memset_s(). diff --git a/lib/replace/replace.h b/lib/replace/replace.h index 8609d84322c..28db8d425a3 100644 --- a/lib/replace/replace.h +++ b/lib/replace/replace.h @@ -822 +822 @@ -#define ZERO_STRUCT(x) memset_s((char *)&(x), sizeof(x), 0, sizeof(x)) +#define ZERO_STRUCT(x) explicit_bzero((char *)&(x), sizeof(x))