xref: /freebsd/contrib/unbound/compat/explicit_bzero.c (revision 3d6d3da45489fc5a3a3d3abf8117f34ab4633e35)
1ff825849SDag-Erling Smørgrav /*	$OpenBSD: explicit_bzero.c,v 1.3 2014/06/21 02:34:26 matthew Exp $ */
2ff825849SDag-Erling Smørgrav /*
3ff825849SDag-Erling Smørgrav  * Public domain.
4ff825849SDag-Erling Smørgrav  * Written by Matthew Dempsky.
5ff825849SDag-Erling Smørgrav  */
6ff825849SDag-Erling Smørgrav #include "config.h"
7ff825849SDag-Erling Smørgrav #include <string.h>
8ff825849SDag-Erling Smørgrav 
9*e2d15004SDag-Erling Smørgrav #ifdef HAVE_ATTR_WEAK
10ff825849SDag-Erling Smørgrav __attribute__((weak)) void
11*e2d15004SDag-Erling Smørgrav #else
12*e2d15004SDag-Erling Smørgrav void
13*e2d15004SDag-Erling Smørgrav #endif
__explicit_bzero_hook(void * ATTR_UNUSED (buf),size_t ATTR_UNUSED (len))14ff825849SDag-Erling Smørgrav __explicit_bzero_hook(void *ATTR_UNUSED(buf), size_t ATTR_UNUSED(len))
15ff825849SDag-Erling Smørgrav {
16ff825849SDag-Erling Smørgrav }
17ff825849SDag-Erling Smørgrav 
18ff825849SDag-Erling Smørgrav void
explicit_bzero(void * buf,size_t len)19ff825849SDag-Erling Smørgrav explicit_bzero(void *buf, size_t len)
20ff825849SDag-Erling Smørgrav {
21ff825849SDag-Erling Smørgrav #ifdef UB_ON_WINDOWS
22ff825849SDag-Erling Smørgrav 	SecureZeroMemory(buf, len);
23ff825849SDag-Erling Smørgrav #endif
24ff825849SDag-Erling Smørgrav 	memset(buf, 0, len);
25ff825849SDag-Erling Smørgrav 	__explicit_bzero_hook(buf, len);
26ff825849SDag-Erling Smørgrav }
27