diff options
author | Xinchen Hui <laruence@gmail.com> | 2018-08-16 13:57:05 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2018-08-16 13:57:05 +0800 |
commit | 1ea2395712a8bb499d677aba4a00a952cd18dc8f (patch) | |
tree | e81e8b5382b068bac2afb85528eb43b15caec17d /ext | |
parent | e4276aeb98e90c572f80369ddf2cb82100e1e70b (diff) | |
parent | eb7fca9546b102c9ee1e03be45a7e696dd631177 (diff) | |
download | php-git-1ea2395712a8bb499d677aba4a00a952cd18dc8f.tar.gz |
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
Update NEWS
Fixed bug #76747 (Opcache treats path containing "test.pharma.tld" as a phar file)
Diffstat (limited to 'ext')
-rw-r--r-- | ext/opcache/ZendAccelerator.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index c08f098ed8..fe742582c9 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -1348,6 +1348,13 @@ static void zend_accel_add_key(const char *key, unsigned int key_length, zend_ac } } +static zend_always_inline zend_bool is_phar_file(zend_string *filename) +{ + return filename && ZSTR_LEN(filename) >= sizeof(".phar") && + !memcmp(ZSTR_VAL(filename) + ZSTR_LEN(filename) - (sizeof(".phar")-1), ".phar", sizeof(".phar")-1) && + !strstr(ZSTR_VAL(filename), "://"); +} + #ifdef HAVE_OPCACHE_FILE_CACHE static zend_persistent_script *store_script_in_file_cache(zend_persistent_script *new_persistent_script) { @@ -1372,10 +1379,7 @@ static zend_persistent_script *store_script_in_file_cache(zend_persistent_script zend_shared_alloc_destroy_xlat_table(); - new_persistent_script->is_phar = - new_persistent_script->script.filename && - strstr(ZSTR_VAL(new_persistent_script->script.filename), ".phar") && - !strstr(ZSTR_VAL(new_persistent_script->script.filename), "://"); + new_persistent_script->is_phar = is_phar_file(new_persistent_script->script.filename); /* Consistency check */ if ((char*)new_persistent_script->mem + new_persistent_script->size != (char*)ZCG(mem)) { @@ -1540,10 +1544,7 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr zend_shared_alloc_destroy_xlat_table(); - new_persistent_script->is_phar = - new_persistent_script->script.filename && - strstr(ZSTR_VAL(new_persistent_script->script.filename), ".phar") && - !strstr(ZSTR_VAL(new_persistent_script->script.filename), "://"); + new_persistent_script->is_phar = is_phar_file(new_persistent_script->script.filename); /* Consistency check */ if ((char*)new_persistent_script->mem + new_persistent_script->size != (char*)ZCG(mem)) { |