From e6f55339ccf923390da1ea354631809acb2e3729 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sun, 26 Jul 2015 18:33:01 +0200 Subject: [PATCH] add new error constant PREG_JIT_STACKLIMIT_ERROR --- ext/pcre/php_pcre.c | 10 +++++++++- ext/pcre/tests/preg_match_error3.phpt | 10 ++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 ext/pcre/tests/preg_match_error3.phpt diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index 8e40f84673..e57bbd9e38 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -50,7 +50,8 @@ enum { PHP_PCRE_BACKTRACK_LIMIT_ERROR, PHP_PCRE_RECURSION_LIMIT_ERROR, PHP_PCRE_BAD_UTF8_ERROR, - PHP_PCRE_BAD_UTF8_OFFSET_ERROR + PHP_PCRE_BAD_UTF8_OFFSET_ERROR, + PHP_PCRE_JIT_STACKLIMIT_ERROR }; @@ -77,6 +78,12 @@ static void pcre_handle_exec_error(int pcre_code) /* {{{ */ case PCRE_ERROR_BADUTF8_OFFSET: preg_code = PHP_PCRE_BAD_UTF8_OFFSET_ERROR; break; + +#ifdef PCRE_STUDY_JIT_COMPILE + case PCRE_ERROR_JIT_STACKLIMIT: + preg_code = PHP_PCRE_JIT_STACKLIMIT_ERROR; + break; +#endif default: preg_code = PHP_PCRE_INTERNAL_ERROR; @@ -169,6 +176,7 @@ static PHP_MINIT_FUNCTION(pcre) REGISTER_LONG_CONSTANT("PREG_RECURSION_LIMIT_ERROR", PHP_PCRE_RECURSION_LIMIT_ERROR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_ERROR", PHP_PCRE_BAD_UTF8_ERROR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_OFFSET_ERROR", PHP_PCRE_BAD_UTF8_OFFSET_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_JIT_STACKLIMIT_ERROR", PHP_PCRE_JIT_STACKLIMIT_ERROR, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("PCRE_VERSION", (char *)pcre_version(), CONST_CS | CONST_PERSISTENT); return SUCCESS; diff --git a/ext/pcre/tests/preg_match_error3.phpt b/ext/pcre/tests/preg_match_error3.phpt new file mode 100644 index 0000000000..05a9baab07 --- /dev/null +++ b/ext/pcre/tests/preg_match_error3.phpt @@ -0,0 +1,10 @@ +--TEST-- +Test preg_match() function : error conditions - jit stacklimit exhausted +--FILE-- + +--EXPECT-- +bool(false) +bool(true) -- 2.40.0