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
#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
#define ZEND_SECURE_ZERO(var, size) explicit_bzero((var), (size))
#endif

View file

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

View file

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