Skip to content

Commit 8d116a4

Browse files
authored
Implement GH-15483: Use C23 memset_explicit() for ZEND_SECURE_ZERO() if available (#18713)
1 parent 761478a commit 8d116a4

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
@@ -496,6 +496,8 @@ extern "C++" {
496496

497497
#ifdef ZEND_WIN32
498498
#define ZEND_SECURE_ZERO(var, size) RtlSecureZeroMemory((var), (size))
499+
#elif defined(HAVE_MEMSET_EXPLICIT)
500+
#define ZEND_SECURE_ZERO(var, size) memset_explicit((var), 0, (size))
499501
#else
500502
#define ZEND_SECURE_ZERO(var, size) explicit_bzero((var), (size))
501503
#endif

configure.ac

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,7 @@ AC_CHECK_FUNCS(m4_normalize([
564564
memmem
565565
mempcpy
566566
memrchr
567+
memset_explicit
567568
mkstemp
568569
mmap
569570
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)