diff options
author | Joe Watkins <krakjoe@php.net> | 2019-10-14 16:50:06 +0200 |
---|---|---|
committer | Joe Watkins <krakjoe@php.net> | 2019-10-14 16:50:23 +0200 |
commit | 042e3b227e61742e01aa80a160a68972fd5abfaf (patch) | |
tree | 7e4be5a526ee9ccafda62832a9e7b1354e8dc0af /ext/opcache/zend_file_cache.c | |
parent | 641f9615cc81f2393504f569db51c02a19d26061 (diff) | |
parent | 22ac57b064b6295d27d60dc416efe1f5ce1c6590 (diff) | |
download | php-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.c | 9 |
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); |