summaryrefslogtreecommitdiff
path: root/ext/opcache/zend_file_cache.c
diff options
context:
space:
mode:
authorJoe Watkins <krakjoe@php.net>2019-10-14 16:50:06 +0200
committerJoe Watkins <krakjoe@php.net>2019-10-14 16:50:23 +0200
commit042e3b227e61742e01aa80a160a68972fd5abfaf (patch)
tree7e4be5a526ee9ccafda62832a9e7b1354e8dc0af /ext/opcache/zend_file_cache.c
parent641f9615cc81f2393504f569db51c02a19d26061 (diff)
parent22ac57b064b6295d27d60dc416efe1f5ce1c6590 (diff)
downloadphp-git-042e3b227e61742e01aa80a160a68972fd5abfaf.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix checksum calculation for opcache
Diffstat (limited to 'ext/opcache/zend_file_cache.c')
-rw-r--r--ext/opcache/zend_file_cache.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c
index 83e8a9d575..6d49b8b950 100644
--- a/ext/opcache/zend_file_cache.c
+++ b/ext/opcache/zend_file_cache.c
@@ -929,7 +929,7 @@ int zend_file_cache_script_store(zend_persistent_script *script, int in_shm)
zend_shared_alloc_destroy_xlat_table();
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);
+ info.checksum = zend_adler32(info.checksum, (unsigned 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
@@ -1504,6 +1504,7 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
zend_accel_hash_entry *bucket;
void *mem, *checkpoint, *buf;
int cache_it = 1;
+ unsigned int actual_checksum;
int ok;
if (!full_path) {
@@ -1587,8 +1588,8 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
/* verify checksum */
if (ZCG(accel_directives).file_cache_consistency_checks &&
- zend_adler32(ADLER32_INIT, mem, info.mem_size + info.str_size) != info.checksum) {
- zend_accel_error(ACCEL_LOG_WARNING, "corrupted file '%s'\n", filename);
+ (actual_checksum = zend_adler32(ADLER32_INIT, mem, info.mem_size + info.str_size)) != info.checksum) {
+ zend_accel_error(ACCEL_LOG_WARNING, "corrupted file '%s' excepted checksum: 0x%08x actual checksum: 0x%08x\n", filename, info.checksum, actual_checksum);
zend_file_cache_unlink(filename);
zend_arena_release(&CG(arena), checkpoint);
efree(filename);
@@ -1676,6 +1677,8 @@ use_process_mem:
zend_accel_hash_update(&ZCSG(hash), ZSTR_VAL(script->script.filename), ZSTR_LEN(script->script.filename), 0, script);
zend_shared_alloc_unlock();
+ zend_accel_error(ACCEL_LOG_INFO, "File cached script loaded into memory '%s'", ZSTR_VAL(script->script.filename));
+
zend_arena_release(&CG(arena), checkpoint);
}
efree(filename);