mirror of
https://github.com/php/php-src.git
synced 2026-04-29 03:03:26 +02:00
Msan: Unpoison buffer written by file cache
It would be great if this were fully initialized, but it's not really a problem either (as long as we don't care about reproducible file cache), so ignore this for now.
This commit is contained in:
@@ -49,6 +49,10 @@
|
||||
# include <sys/file.h>
|
||||
#endif
|
||||
|
||||
#if __has_feature(memory_sanitizer)
|
||||
# include <sanitizer/msan_interface.h>
|
||||
#endif
|
||||
|
||||
#ifndef ZEND_WIN32
|
||||
#define zend_file_cache_unlink unlink
|
||||
#define zend_file_cache_open open
|
||||
@@ -947,6 +951,14 @@ int zend_file_cache_script_store(zend_persistent_script *script, int in_shm)
|
||||
info.checksum = zend_adler32(ADLER32_INIT, buf, script->size);
|
||||
info.checksum = zend_adler32(info.checksum, (signed char*)ZSTR_VAL((zend_string*)ZCG(mem)), info.str_size);
|
||||
|
||||
#if __has_feature(memory_sanitizer)
|
||||
/* The buffer may contain uninitialized regions. However, the uninitialized parts will not be
|
||||
* used when reading the cache. We should probably still try to get things fully initialized
|
||||
* for reproducibility, but for now ignore this issue. */
|
||||
__msan_unpoison(&info, sizeof(info));
|
||||
__msan_unpoison(buf, script->size);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_UIO_H
|
||||
vec[0].iov_base = &info;
|
||||
vec[0].iov_len = sizeof(info);
|
||||
|
||||
Reference in New Issue
Block a user