Commit:    4d703a4225977b0c6abb2f88c2fe56732d6452a1
Author:    Anatol Belski <a...@php.net>         Thu, 5 Dec 2013 12:08:19 +0100
Parents:   a0622d7c68f3b55068053aaa089f854ec59cb698
Branches:  str_size_and_int64

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=4d703a4225977b0c6abb2f88c2fe56732d6452a1

Log:
added range check for pcre ini entries

Changed paths:
  M  ext/pcre/php_pcre.c
  M  ext/pcre/php_pcre.h


Diff:
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c
index 3daa8e8..05dad38 100644
--- a/ext/pcre/php_pcre.c
+++ b/ext/pcre/php_pcre.c
@@ -114,9 +114,41 @@ static PHP_GSHUTDOWN_FUNCTION(pcre) /* {{{ */
 }
 /* }}} */
 
+static PHP_INI_MH(OnChangeBacktrackLimit)
+{/*{{{*/
+       php_int_t i;
+
+       ZEND_ATOI(i, new_value);
+
+       if (i > (unsigned long)-1) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Value '%pd' is too 
big for pcre.backtrack_limit", i);
+               return FAILURE;
+       }
+
+       PCRE_G(backtrack_limit) = i;
+
+       return SUCCESS;
+}/*}}}*/
+
+static PHP_INI_MH(OnChangeRecursionLimit)
+{/*{{{*/
+       php_int_t i;
+
+       ZEND_ATOI(i, new_value);
+
+       if (i > (unsigned long)-1) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Value '%pd' is too 
big for pcre.recursion_limit", i);
+               return FAILURE;
+       }
+
+       PCRE_G(recursion_limit) = i;
+
+       return SUCCESS;
+}/*}}}*/
+
 PHP_INI_BEGIN()
-       STD_PHP_INI_ENTRY("pcre.backtrack_limit", "1000000", PHP_INI_ALL, 
OnUpdateLong, backtrack_limit, zend_pcre_globals, pcre_globals)
-       STD_PHP_INI_ENTRY("pcre.recursion_limit", "100000", PHP_INI_ALL, 
OnUpdateLong, recursion_limit, zend_pcre_globals, pcre_globals)
+       PHP_INI_ENTRY("pcre.backtrack_limit", "1000000", PHP_INI_ALL, 
OnChangeBacktrackLimit)
+       PHP_INI_ENTRY("pcre.recursion_limit", "100000", PHP_INI_ALL, 
OnChangeRecursionLimit)
 PHP_INI_END()
 
 
diff --git a/ext/pcre/php_pcre.h b/ext/pcre/php_pcre.h
index 5a94360..26d2756 100644
--- a/ext/pcre/php_pcre.h
+++ b/ext/pcre/php_pcre.h
@@ -68,8 +68,8 @@ PHPAPI void  php_pcre_grep_impl(   pcre_cache_entry *pce, 
zval *input, zval *ret
 
 ZEND_BEGIN_MODULE_GLOBALS(pcre)
        HashTable pcre_cache;
-       long backtrack_limit;
-       long recursion_limit;
+       php_int_t backtrack_limit;
+       php_int_t recursion_limit;
        int  error_code;
 ZEND_END_MODULE_GLOBALS(pcre)


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to