1
0
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:
Nikita Popov
2019-07-01 11:02:31 +02:00
parent c8af6a7fa7
commit da06f7f383
+12
View File
@@ -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);