summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzherczeg <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>2015-09-02 08:50:31 +0000
committerzherczeg <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>2015-09-02 08:50:31 +0000
commitd98a87182509eb50a5277f0d6e5465dc6bfeea3b (patch)
treef4be7c889e16245ddc898d408793465685566bcc
parentef392aca5d02cf8bcf198c9946c2bb171d012c77 (diff)
downloadpcre-d98a87182509eb50a5277f0d6e5465dc6bfeea3b.tar.gz
A match limit issue is fixed in JIT.
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1599 2f5784b3-3f2a-0410-8824-cb99058d5e15
-rw-r--r--ChangeLog3
-rw-r--r--pcre_jit_compile.c3
-rw-r--r--testdata/testinput123
-rw-r--r--testdata/testoutput124
4 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index eec0bce..80bd5af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -150,6 +150,9 @@ Version 8.38 xx-xxx-xxxx
into the workspace safety margin. The next one would have expanded the
workspace. The test for overflow was not including the safety margin.
+40. A match limit issue is fixed in JIT which was found by Karl Skomski
+ with a custom LLVM fuzzer.
+
Version 8.37 28-April-2015
--------------------------
diff --git a/pcre_jit_compile.c b/pcre_jit_compile.c
index aa1b6cb..f85912d 100644
--- a/pcre_jit_compile.c
+++ b/pcre_jit_compile.c
@@ -8483,8 +8483,7 @@ while (cc < ccend)
OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), STR_PTR, 0);
}
BACKTRACK_AS(braminzero_backtrack)->matchingpath = LABEL();
- if (cc[1] > OP_ASSERTBACK_NOT)
- count_match(common);
+ count_match(common);
break;
case OP_ONCE:
diff --git a/testdata/testinput12 b/testdata/testinput12
index e109de7..944be69 100644
--- a/testdata/testinput12
+++ b/testdata/testinput12
@@ -101,4 +101,7 @@ and a couple of things that are different with JIT. --/
/(x(?1)){4}/S++
+/(.|.)*?bx/
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax
+
/-- End of testinput12 --/
diff --git a/testdata/testoutput12 b/testdata/testoutput12
index 4fe0417..8791108 100644
--- a/testdata/testoutput12
+++ b/testdata/testoutput12
@@ -197,4 +197,8 @@ No match, mark = m (JIT)
/(x(?1)){4}/S++
+/(.|.)*?bx/
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax
+Error -8 (match limit exceeded)
+
/-- End of testinput12 --/