diff --git a/ext/standard/base64.c b/ext/standard/base64.c index 3893438839aee..82aa58a4b88ad 100644 --- a/ext/standard/base64.c +++ b/ext/standard/base64.c @@ -20,6 +20,10 @@ #include "php.h" #include "base64.h" +#if __has_feature(memory_sanitizer) +# include +#endif + /* {{{ base64 tables */ static const char base64_table[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', @@ -891,6 +895,12 @@ PHPAPI zend_string *php_base64_encode(const unsigned char *str, size_t length) zend_string *result; result = zend_string_safe_alloc(((length + 2) / 3), 4 * sizeof(char), 0, 0); + +# if __has_feature(memory_sanitizer) + /* Clang 18 MSan does not instrument on AArch64. */ + __msan_unpoison(ZSTR_VAL(result), ZSTR_LEN(result)); +# endif + p = (unsigned char *)ZSTR_VAL(result); p = php_base64_encode_impl(str, length, p); @@ -913,6 +923,11 @@ PHPAPI zend_string *php_base64_decode_ex(const unsigned char *str, size_t length result = zend_string_alloc(length, 0); +# if __has_feature(memory_sanitizer) + /* Clang 18 MSan does not instrument on AArch64. */ + __msan_unpoison(ZSTR_VAL(result), ZSTR_LEN(result)); +# endif + if (!php_base64_decode_impl(str, length, (unsigned char*)ZSTR_VAL(result), &outl, strict)) { zend_string_efree(result); return NULL; diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 7bc7122b85963..f3a10d8c81d40 100755 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -1190,7 +1190,7 @@ PHP_FUNCTION(usleep) PHP_FUNCTION(time_nanosleep) { zend_long tv_sec, tv_nsec; - struct timespec php_req, php_rem; + struct timespec php_req, php_rem = {0}; ZEND_PARSE_PARAMETERS_START(2, 2) Z_PARAM_LONG(tv_sec)