summaryrefslogtreecommitdiff
path: root/ext/opcache/zend_file_cache.c
diff options
context:
space:
mode:
authorJoe Watkins <krakjoe@php.net>2019-10-14 16:50:36 +0200
committerJoe Watkins <krakjoe@php.net>2019-10-14 16:50:56 +0200
commitf8e3970ff0cef281312ff524494df863fbd3b76f (patch)
tree67a208d6bda5a0c9117eb22d8c544671eedbe89f /ext/opcache/zend_file_cache.c
parent4e563e6c9505628fec687d0f892573639b249beb (diff)
parent042e3b227e61742e01aa80a160a68972fd5abfaf (diff)
downloadphp-git-f8e3970ff0cef281312ff524494df863fbd3b76f.tar.gz
Merge branch 'PHP-7.4'
* PHP-7.4: 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 663f511bc1..697bb10b0d 100644
--- a/ext/opcache/zend_file_cache.c
+++ b/ext/opcache/zend_file_cache.c
@@ -936,7 +936,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
@@ -1511,6 +1511,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) {
@@ -1594,8 +1595,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);
@@ -1683,6 +1684,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);