/* * SPDX-FileCopyrightText: 2022-2023, Christian Göttsche * SPDX-License-Identifier: BSD-3-Clause */ #ifndef SHADOW_INCLUDE_LIBMISC_MEMZERO_H_ #define SHADOW_INCLUDE_LIBMISC_MEMZERO_H_ #include #include #include #include #ifdef HAVE_MEMSET_EXPLICIT # define memzero(ptr, size) memset_explicit((ptr), 0, (size)) #elif defined HAVE_EXPLICIT_BZERO # define memzero(ptr, size) explicit_bzero((ptr), (size)) #else static inline void memzero(void *ptr, size_t size) { ptr = memset(ptr, '\0', size); __asm__ __volatile__ ("" : : "r"(ptr) : "memory"); } #endif #define strzero(s) memzero(s, strlen(s)) /* warning: evaluates twice */ #endif // include guard