From 2451870e3c47a849d729ed83dce4d7434460f49b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Herczeg?= Date: Tue, 27 Oct 2020 08:16:04 +0000 Subject: [PATCH] Fixed a word boundary check bug in JIT when partial matching is enabled. Conflict:delete Changelog Reference:https://github.com/PhilipHazel/pcre2/commit/2451870e3c47a849d729ed83dce4d7434460f49b --- src/pcre2_jit_compile.c | 2 ++ testdata/testinput10 | 4 ++++ testdata/testoutput10 | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c index 03726b8..3d699a0 100644 --- a/src/pcre2_jit_compile.c +++ b/src/pcre2_jit_compile.c @@ -6571,9 +6571,11 @@ if (common->invalid_utf) if (common->mode != PCRE2_JIT_COMPLETE) { + OP1(SLJIT_MOV, RETURN_ADDR, 0, TMP1, 0); OP1(SLJIT_MOV, TMP2, 0, STR_PTR, 0); move_back(common, NULL, TRUE); check_start_used_ptr(common); + OP1(SLJIT_MOV, TMP1, 0, RETURN_ADDR, 0); OP1(SLJIT_MOV, STR_PTR, 0, TMP2, 0); } } diff --git a/testdata/testinput10 b/testdata/testinput10 index efd3298..53e37cb 100644 --- a/testdata/testinput10 +++ b/testdata/testinput10 @@ -613,4 +613,8 @@ /A/utf,match_invalid_utf,caseless \xe5A +/\bch\b/utf,match_invalid_utf + qchq\=ph + qchq\=ps + # End of testinput10 diff --git a/testdata/testoutput10 b/testdata/testoutput10 index 2a3803f..d408510 100644 --- a/testdata/testoutput10 +++ b/testdata/testoutput10 @@ -1875,4 +1875,10 @@ Subject length lower bound = 1 \xe5A 0: A +/\bch\b/utf,match_invalid_utf + qchq\=ph +Partial match: + qchq\=ps +Partial match: + # End of testinput10 -- 2.27.0