Skip to content

Commit

Permalink
Mangle PCRE regex cache key with JIT option
Browse files Browse the repository at this point in the history
Closes GH-11396
  • Loading branch information
mvorisek authored and iluuu1994 committed Jun 22, 2023
1 parent 2be4d91 commit 466fc78
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
2 changes: 2 additions & 0 deletions NEWS
Expand Up @@ -2,6 +2,8 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? ????, PHP 8.1.22

- PCRE:
. Mangle PCRE regex cache key with JIT option. (mvorisek)

06 Jul 2023, PHP 8.1.21

Expand Down
19 changes: 16 additions & 3 deletions ext/pcre/php_pcre.c
Expand Up @@ -627,11 +627,24 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache_ex(zend_string *regex, in
pcre_cache_entry *ret;

if (locale_aware && BG(ctype_string)) {
key = zend_string_concat2(
key = zend_string_concat3(
ZSTR_VAL(BG(ctype_string)), ZSTR_LEN(BG(ctype_string)),
ZSTR_VAL(regex), ZSTR_LEN(regex));
ZSTR_VAL(regex), ZSTR_LEN(regex),
#ifdef HAVE_PCRE_JIT_SUPPORT
PCRE_G(jit) ? "1" : "0", 1
#else
"", 0
#endif
);
} else {
#ifdef HAVE_PCRE_JIT_SUPPORT
key = zend_string_concat2(
ZSTR_VAL(regex), ZSTR_LEN(regex),
PCRE_G(jit) ? "1" : "0", 1
);
#else
key = regex;
#endif
}

/* Try to lookup the cached regex entry, and if successful, just pass
Expand Down Expand Up @@ -786,7 +799,7 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache_ex(zend_string *regex, in
return NULL;
}

if (key != regex) {
if (locale_aware && BG(ctype_string)) {
tables = (uint8_t *)zend_hash_find_ptr(&char_tables, BG(ctype_string));
if (!tables) {
zend_string *_k;
Expand Down

0 comments on commit 466fc78

Please sign in to comment.