mbregex_stack_limit2.phpt 1000 B

123456789101112131415161718192021222324252627282930313233
  1. --TEST--
  2. Test oniguruma stack limit
  3. --EXTENSIONS--
  4. mbstring
  5. iconv
  6. --SKIPIF--
  7. <?php
  8. if (!function_exists('mb_ereg_replace')) die('skip mb_ereg_replace not available');
  9. if (version_compare(MB_ONIGURUMA_VERSION, '6.9.3') < 0) {
  10. die('skip requires Oniguruma 6.9.3');
  11. }
  12. ?>
  13. --FILE--
  14. <?php
  15. function mb_trim( $string, $chars = "", $chars_array = array() )
  16. {
  17. for( $x=0; $x<iconv_strlen( $chars ); $x++ ) $chars_array[] = preg_quote( iconv_substr( $chars, $x, 1 ) );
  18. $encoded_char_list = implode( "|", array_merge( array( "\s","\t","\n","\r", "\0", "\x0B" ), $chars_array ) );
  19. $string = mb_ereg_replace( "^($encoded_char_list)*", "", $string );
  20. $string = mb_ereg_replace( "($encoded_char_list)*$", "", $string );
  21. return $string;
  22. }
  23. ini_set('mbstring.regex_stack_limit', 10000);
  24. var_dump(mb_trim(str_repeat(' ', 10000)));
  25. echo 'OK';
  26. ?>
  27. --EXPECTF--
  28. Warning: mb_ereg_replace(): mbregex search failure in php_mbereg_replace_exec(): match-stack limit over in %s on line %d
  29. string(0) ""
  30. OK