Skip to content

Commit 0287ea9

Browse files
committed
Implement phpGH-15483: Use C23 memset_explicit() for ZEND_SECURE_ZERO() if available
1 parent 5d2f0cb commit 0287ea9

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

Zend/zend_portability.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,8 @@ extern "C++" {
491491

492492
#ifdef ZEND_WIN32
493493
#define ZEND_SECURE_ZERO(var, size) RtlSecureZeroMemory((var), (size))
494+
#elif defined(HAVE_MEMSET_EXPLICIT)
495+
#define ZEND_SECURE_ZERO(var, size) memset_explicit((var), 0, (size))
494496
#else
495497
#define ZEND_SECURE_ZERO(var, size) explicit_bzero((var), (size))
496498
#endif

configure.ac

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,7 @@ AC_CHECK_FUNCS(m4_normalize([
565565
memmem
566566
mempcpy
567567
memrchr
568+
memset_explicit
568569
mkstemp
569570
mmap
570571
nice

main/explicit_bzero.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@
2828

2929
PHPAPI void php_explicit_bzero(void *dst, size_t siz)
3030
{
31-
#ifdef HAVE_EXPLICIT_MEMSET
32-
explicit_memset(dst, 0, siz);
31+
#ifdef HAVE_MEMSET_EXPLICIT /* C23 */
32+
memset_explicit(dst, 0, siz);
33+
#elif defined(HAVE_EXPLICIT_MEMSET) /* NetBSD-specific */
34+
explicit_memset(dst, 0, siz);
3335
#elif defined(PHP_WIN32)
3436
RtlSecureZeroMemory(dst, siz);
3537
#elif defined(__GNUC__)

0 commit comments

Comments
 (0)