]> granicus.if.org Git - php/commitdiff
added configure option --disable-mbregex-backtrack.
authorSeiji Masugata <masugata@php.net>
Fri, 25 Aug 2006 16:26:50 +0000 (16:26 +0000)
committerSeiji Masugata <masugata@php.net>
Fri, 25 Aug 2006 16:26:50 +0000 (16:26 +0000)
ext/mbstring/config.m4
ext/mbstring/mbstring.c
ext/mbstring/oniguruma/regcomp.c
ext/mbstring/oniguruma/regint.h

index 49e0a861712630eaeeaa802856bd55bdc4c569a6..638f910a034d9dd6f8194344bd810ba6fae05782 100644 (file)
@@ -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)
index bacc7166afe9cf4c2b5803e3817124e595a85327..457877c7ddb00497712302b60239c05573c5eee6 100644 (file)
@@ -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();
index 507faee8e2d8092c3f685b27c3303704f77f6cf3..7bc891cf0bba63531d74e53a15d5f96b07aa7390 100644 (file)
@@ -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)
index c9f494e44e0615522bc8ec35d1b3905d185e0c45..aa293be459aca8044b9bd53b59b09e06ad07d3e0 100644 (file)
@@ -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