From 0994e373f21c1b4c63d38975f0c62866f0378113 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 19 Dec 2017 12:51:38 +0100 Subject: [PATCH] Compile the blacklist pattern with JIT There are certain limitations on the pattern size. Should the JIT compilation fail, the interpreter code is still usable. --- ext/opcache/zend_accelerator_blacklist.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ext/opcache/zend_accelerator_blacklist.c b/ext/opcache/zend_accelerator_blacklist.c index 46d50cf96d..8b8c9b0d37 100644 --- a/ext/opcache/zend_accelerator_blacklist.c +++ b/ext/opcache/zend_accelerator_blacklist.c @@ -184,6 +184,13 @@ static void zend_accel_blacklist_update_regexp(zend_blacklist *blacklist) blacklist_report_regexp_error((char *)pcre_error, pcre_error_offset); return; } +#ifdef HAVE_PCRE_JIT_SUPPORT + if (0 > pcre2_jit_compile(it->re, PCRE2_JIT_COMPLETE)) { + /* Don't return here, even JIT could fail to compile, the pattern is still usable. */ + pcre2_get_error_message(errnumber, pcre_error, sizeof(pcre_error)); + zend_accel_error(ACCEL_LOG_WARNING, "Blacklist JIT compilation failed, %s\n", pcre_error); + } +#endif /* prepare for the next iteration */ p = regexp + 2; *regexp_list_it = it; -- 2.40.0