summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeiji Masugata <masugata@php.net>2006-08-25 16:26:50 +0000
committerSeiji Masugata <masugata@php.net>2006-08-25 16:26:50 +0000
commit100742f7a2c5f6ff076c868d3fdb95feb6e9063a (patch)
tree44bb26df592bb01742ed754ecaad366c868e9b73
parent8e54de1d7710d8c33d2d88fdb882412e80f39b02 (diff)
downloadphp-git-100742f7a2c5f6ff076c868d3fdb95feb6e9063a.tar.gz
added configure option --disable-mbregex-backtrack.
-rw-r--r--ext/mbstring/config.m48
-rw-r--r--ext/mbstring/mbstring.c5
-rw-r--r--ext/mbstring/oniguruma/regcomp.c3
-rw-r--r--ext/mbstring/oniguruma/regint.h2
4 files changed, 18 insertions, 0 deletions
diff --git a/ext/mbstring/config.m4 b/ext/mbstring/config.m4
index 49e0a86171..638f910a03 100644
--- a/ext/mbstring/config.m4
+++ b/ext/mbstring/config.m4
@@ -101,6 +101,11 @@ esac
fi
AC_DEFINE([HAVE_MBREGEX], 1, [whether to have multibyte regex support])
+
+ if test "$PHP_MBREGEX_BACKTRACK" != "no"; then
+ AC_DEFINE([HAVE_MBREGEX_BACKTRACK],1,[whether to check multibyte regex backtrack])
+ fi
+
PHP_MBSTRING_ADD_CFLAG([-DNOT_RUBY])
PHP_MBSTRING_ADD_BUILD_DIR([oniguruma])
PHP_MBSTRING_ADD_BUILD_DIR([oniguruma/enc])
@@ -278,6 +283,9 @@ PHP_ARG_ENABLE(mbstring, whether to enable multibyte string support,
PHP_ARG_ENABLE([mbregex], [whether to enable multibyte regex support],
[ --disable-mbregex MBSTRING: Disable multibyte regex support], yes, no)
+PHP_ARG_ENABLE([mbregex_backtrack], [whether to check multibyte regex backtrack],
+[ --disable-mbregex-backtrack MBSTRING: Disable multibyte regex backtrack check], yes, no)
+
PHP_ARG_WITH(libmbfl, [for external libmbfl],
[ --with-libmbfl[=DIR] MBSTRING: Use external libmbfl. DIR is the libmbfl install prefix.
If DIR is not set, the bundled libmbfl will be used], no, no)
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index bacc7166af..457877c7dd 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -1050,6 +1050,11 @@ PHP_MINFO_FUNCTION(mbstring)
sprintf(buf, "%d.%d.%d",
ONIGURUMA_VERSION_MAJOR,ONIGURUMA_VERSION_MINOR,ONIGURUMA_VERSION_TEENY);
php_info_print_table_row(2, "Multibyte regex (oniguruma) version", buf);
+#ifdef HAVE_MBREGEX_BACKTRACK
+ php_info_print_table_row(2, "Multibyte regex (oniguruma) backtrack check", "On");
+#else /* HAVE_MBREGEX_BACKTRACK */
+ php_info_print_table_row(2, "Multibyte regex (oniguruma) backtrack check", "Off");
+#endif /* HAVE_MBREGEX_BACKTRACK */
}
#endif
php_info_print_table_end();
diff --git a/ext/mbstring/oniguruma/regcomp.c b/ext/mbstring/oniguruma/regcomp.c
index 507faee8e2..7bc891cf0b 100644
--- a/ext/mbstring/oniguruma/regcomp.c
+++ b/ext/mbstring/oniguruma/regcomp.c
@@ -186,6 +186,8 @@ add_opcode(regex_t* reg, int opcode)
return 0;
}
+#ifdef USE_COMBINATION_EXPLOSION_CHECK
+
static int
add_state_check_num(regex_t* reg, int num)
{
@@ -194,6 +196,7 @@ add_state_check_num(regex_t* reg, int num)
BBUF_ADD(reg, &n, SIZE_STATE_CHECK_NUM);
return 0;
}
+#endif /* USE_COMBINATION_EXPLOSION_CHECK */
static int
add_rel_addr(regex_t* reg, int addr)
diff --git a/ext/mbstring/oniguruma/regint.h b/ext/mbstring/oniguruma/regint.h
index c9f494e44e..aa293be459 100644
--- a/ext/mbstring/oniguruma/regint.h
+++ b/ext/mbstring/oniguruma/regint.h
@@ -59,7 +59,9 @@
/* #define USE_UNICODE_FULL_RANGE_CTYPE */ /* --> move to regenc.h */
#define USE_NAMED_GROUP
#define USE_SUBEXP_CALL
+#ifdef HAVE_MBREGEX_BACKTRACK
#define USE_COMBINATION_EXPLOSION_CHECK /* (X*)* */
+#endif /* HAVE_MBREGEX_BACKTRACK */
#define USE_INFINITE_REPEAT_MONOMANIAC_MEM_STATUS_CHECK /* /(?:()|())*\2/ */
#define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE /* /\n$/ =~ "\n" */
#define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR