Skip to content

Commit a8394a9

Browse files
committed
Merge branch 'PHP-7.3'
* PHP-7.3: Update NEWS Update NEWS Fixed bug #76747 (Opcache treats path containing "test.pharma.tld" as a phar file)
2 parents d7520f3 + 6e7b381 commit a8394a9

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

ext/opcache/ZendAccelerator.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1348,6 +1348,13 @@ static void zend_accel_add_key(const char *key, unsigned int key_length, zend_ac
13481348
}
13491349
}
13501350

1351+
static zend_always_inline zend_bool is_phar_file(zend_string *filename)
1352+
{
1353+
return filename && ZSTR_LEN(filename) >= sizeof(".phar") &&
1354+
!memcmp(ZSTR_VAL(filename) + ZSTR_LEN(filename) - (sizeof(".phar")-1), ".phar", sizeof(".phar")-1) &&
1355+
!strstr(ZSTR_VAL(filename), "://");
1356+
}
1357+
13511358
#ifdef HAVE_OPCACHE_FILE_CACHE
13521359
static zend_persistent_script *store_script_in_file_cache(zend_persistent_script *new_persistent_script)
13531360
{
@@ -1372,10 +1379,7 @@ static zend_persistent_script *store_script_in_file_cache(zend_persistent_script
13721379

13731380
zend_shared_alloc_destroy_xlat_table();
13741381

1375-
new_persistent_script->is_phar =
1376-
new_persistent_script->script.filename &&
1377-
strstr(ZSTR_VAL(new_persistent_script->script.filename), ".phar") &&
1378-
!strstr(ZSTR_VAL(new_persistent_script->script.filename), "://");
1382+
new_persistent_script->is_phar = is_phar_file(new_persistent_script->script.filename);
13791383

13801384
/* Consistency check */
13811385
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
15401544

15411545
zend_shared_alloc_destroy_xlat_table();
15421546

1543-
new_persistent_script->is_phar =
1544-
new_persistent_script->script.filename &&
1545-
strstr(ZSTR_VAL(new_persistent_script->script.filename), ".phar") &&
1546-
!strstr(ZSTR_VAL(new_persistent_script->script.filename), "://");
1547+
new_persistent_script->is_phar = is_phar_file(new_persistent_script->script.filename);
15471548

15481549
/* Consistency check */
15491550
if ((char*)new_persistent_script->mem + new_persistent_script->size != (char*)ZCG(mem)) {

0 commit comments

Comments
 (0)