Implement GH-15483: Use C23 memset_explicit() for ZEND_SECURE_ZERO() if available (#18713)

This commit is contained in:
Niels Dossche 2025-06-29 14:29:28 +02:00 committed by GitHub
parent 761478a032
commit 8d116a4ba1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 7 additions and 2 deletions

View file

@ -496,6 +496,8 @@ extern "C++" {
#ifdef ZEND_WIN32 #ifdef ZEND_WIN32
#define ZEND_SECURE_ZERO(var, size) RtlSecureZeroMemory((var), (size)) #define ZEND_SECURE_ZERO(var, size) RtlSecureZeroMemory((var), (size))
#elif defined(HAVE_MEMSET_EXPLICIT)
#define ZEND_SECURE_ZERO(var, size) memset_explicit((var), 0, (size))
#else #else
#define ZEND_SECURE_ZERO(var, size) explicit_bzero((var), (size)) #define ZEND_SECURE_ZERO(var, size) explicit_bzero((var), (size))
#endif #endif

View file

@ -564,6 +564,7 @@ AC_CHECK_FUNCS(m4_normalize([
memmem memmem
mempcpy mempcpy
memrchr memrchr
memset_explicit
mkstemp mkstemp
mmap mmap
nice nice

View file

@ -28,7 +28,9 @@
PHPAPI void php_explicit_bzero(void *dst, size_t siz) PHPAPI void php_explicit_bzero(void *dst, size_t siz)
{ {
#ifdef HAVE_EXPLICIT_MEMSET #ifdef HAVE_MEMSET_EXPLICIT /* C23 */
memset_explicit(dst, 0, siz);
#elif defined(HAVE_EXPLICIT_MEMSET) /* NetBSD-specific */
explicit_memset(dst, 0, siz); explicit_memset(dst, 0, siz);
#elif defined(PHP_WIN32) #elif defined(PHP_WIN32)
RtlSecureZeroMemory(dst, siz); RtlSecureZeroMemory(dst, siz);