mirror of
https://github.com/php/php-src.git
synced 2024-11-24 10:24:11 +08:00
Fixed bug #74663 (Segfault with opcache.memory_protect and validate_timestamp)
This commit is contained in:
parent
ece7d223e8
commit
60912e66c8
4
NEWS
4
NEWS
@ -6,6 +6,10 @@ PHP NEWS
|
||||
. Fixed bug #74658 (Undefined constants in array properties result in broken
|
||||
properties). (Laruence)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #74663 (Segfault with opcache.memory_protect and
|
||||
validate_timestamp). (Laruence)
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #74478 (null coalescing operator failing with SplFixedArray).
|
||||
(jhdxr)
|
||||
|
@ -957,6 +957,17 @@ int validate_timestamp_and_record(zend_persistent_script *persistent_script, zen
|
||||
}
|
||||
}
|
||||
|
||||
int validate_timestamp_and_record_ex(zend_persistent_script *persistent_script, zend_file_handle *file_handle)
|
||||
{
|
||||
int ret;
|
||||
|
||||
SHM_UNPROTECT();
|
||||
ret = validate_timestamp_and_record(persistent_script, file_handle);
|
||||
SHM_PROTECT();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Instead of resolving full real path name each time we need to identify file,
|
||||
* we create a key that consist from requested file name, current working
|
||||
* directory, current include_path, etc */
|
||||
|
@ -331,6 +331,7 @@ void zend_accel_schedule_restart(zend_accel_restart_reason reason);
|
||||
void zend_accel_schedule_restart_if_necessary(zend_accel_restart_reason reason);
|
||||
accel_time_t zend_get_file_handle_timestamp(zend_file_handle *file_handle, size_t *size);
|
||||
int validate_timestamp_and_record(zend_persistent_script *persistent_script, zend_file_handle *file_handle);
|
||||
int validate_timestamp_and_record_ex(zend_persistent_script *persistent_script, zend_file_handle *file_handle);
|
||||
int zend_accel_invalidate(const char *filename, int filename_len, zend_bool force);
|
||||
int zend_accel_script_optimize(zend_persistent_script *persistent_script);
|
||||
int accelerator_shm_read_lock(void);
|
||||
|
25
ext/opcache/tests/bug74663.phpt
Normal file
25
ext/opcache/tests/bug74663.phpt
Normal file
@ -0,0 +1,25 @@
|
||||
--TEST--
|
||||
Bug #74663 (Segfault with opcache.memory_protect and validate_timestamp)
|
||||
--INI--
|
||||
opcache.enable=1
|
||||
opcache.enable_cli=1
|
||||
opcache.file_update_protection=0
|
||||
opcache.enable_file_override=1
|
||||
opcache.validate_timestamps=1
|
||||
opcache.revalidate_freq=0
|
||||
opcache.protect_memory=1
|
||||
--SKIPIF--
|
||||
<?php require_once('skipif.inc'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
$file = __DIR__ . "/bug74663.inc";
|
||||
file_put_contents($file, "");
|
||||
include $file;
|
||||
|
||||
var_dump(is_file($file));
|
||||
?>
|
||||
--CLEAN--
|
||||
<?php
|
||||
unlink(__DIR__ . "/bug74663.inc");
|
||||
--EXPECT--
|
||||
bool(true)
|
@ -341,7 +341,7 @@ static int filename_is_in_cache(zend_string *filename)
|
||||
handle.type = ZEND_HANDLE_FILENAME;
|
||||
|
||||
if (ZCG(accel_directives).validate_timestamps) {
|
||||
return validate_timestamp_and_record(persistent_script, &handle) == SUCCESS;
|
||||
return validate_timestamp_and_record_ex(persistent_script, &handle) == SUCCESS;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user