com php-src: add new error constant PREG_JIT_STACKLIMIT_E RROR: ext/pcre/php_pcre.c ext/pcre/tests/preg_match _error3.phpt
| From: | Christoph Michael Becker | Date: | Sun, 26 Jul 2015 21:40:38 +0000 |
| Subject: | com php-src: add new error constant PREG_JIT_STACKLIMIT_E RROR: ext/pcre/php_pcre.c ext/pcre/tests/preg_match _error3.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-88231@lists.php.net to get a copy of this message | ||
Commit: e6f55339ccf923390da1ea354631809acb2e3729
Author: Christoph M. Becker <cmbecker69@gmx.de> Sun, 26 Jul 2015 18:33:01 +0200
Parents: 70c6a6f624ec07be37ce90424d0765e3c78d1bf5
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=e6f55339ccf923390da1ea354631809acb2e3729
Log:
add new error constant PREG_JIT_STACKLIMIT_ERROR
Changed paths:
M ext/pcre/php_pcre.c
A ext/pcre/tests/preg_match_error3.phpt
Diff:
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c
index 8e40f84..e57bbd9 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 0000000..05a9baa
--- /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--
+<?php
+var_dump(preg_match('/^(foo)+$/', str_repeat('foo', 8192)));
+var_dump(preg_last_error() === PREG_JIT_STACKLIMIT_ERROR);
+?>
+--EXPECT--
+bool(false)
+bool(true)