summaryrefslogtreecommitdiff
path: root/external/icu/icu.changeset_36724.patch.1
diff options
context:
space:
mode:
Diffstat (limited to 'external/icu/icu.changeset_36724.patch.1')
-rw-r--r--external/icu/icu.changeset_36724.patch.139
1 files changed, 39 insertions, 0 deletions
diff --git a/external/icu/icu.changeset_36724.patch.1 b/external/icu/icu.changeset_36724.patch.1
new file mode 100644
index 000000000000..82e0f21394b5
--- /dev/null
+++ b/external/icu/icu.changeset_36724.patch.1
@@ -0,0 +1,39 @@
+Index: icu/source/i18n/regexcmp.cpp
+===================================================================
+--- icu/source/i18n/regexcmp.cpp (revision 36723)
++++ icu/source/i18n/regexcmp.cpp (revision 36724)
+@@ -2136,4 +2136,8 @@
+ int32_t minML = minMatchLength(fMatchOpenParen, patEnd);
+ int32_t maxML = maxMatchLength(fMatchOpenParen, patEnd);
++ if (URX_TYPE(maxML) != 0) {
++ error(U_REGEX_LOOK_BEHIND_LIMIT);
++ break;
++ }
+ if (maxML == INT32_MAX) {
+ error(U_REGEX_LOOK_BEHIND_LIMIT);
+@@ -2169,4 +2173,8 @@
+ int32_t minML = minMatchLength(fMatchOpenParen, patEnd);
+ int32_t maxML = maxMatchLength(fMatchOpenParen, patEnd);
++ if (URX_TYPE(maxML) != 0) {
++ error(U_REGEX_LOOK_BEHIND_LIMIT);
++ break;
++ }
+ if (maxML == INT32_MAX) {
+ error(U_REGEX_LOOK_BEHIND_LIMIT);
+Index: icu/source/test/testdata/regextst.txt
+===================================================================
+--- icu/source/test/testdata/regextst.txt (revision 36723)
++++ icu/source/test/testdata/regextst.txt (revision 36724)
+@@ -1201,4 +1201,12 @@
+ "A|B|\U00012345" "hello <0>\U00012345</0>"
+ "A|B|\U00010000" "hello \ud800"
++
++# Bug 11370
++# Max match length computation of look-behind expression gives result that is too big to fit in the
++# in the 24 bit operand portion of the compiled code. Expressions should fail to compile
++# (Look-behind match length must be bounded. This case is treated as unbounded, an error.)
++
++"(?<!(0123456789a){10000000})x" E "no match"
++"(?<!\\ubeaf(\\ubeaf{11000}){11000})" E "no match"
+
+ # Random debugging, Temporary