From 8a057ba535e6e9f946594ac82bd5d897d416ac49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 27 Oct 2020 14:04:39 +0100 Subject: [PATCH] Fix a partial matching for a word boundary in JIT mode --- ...ndary-check-bug-in-JIT-when-partial-.patch | 63 +++++++++++++++++++ pcre2.spec | 9 ++- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 pcre2-10.35-Fixed-a-word-boundary-check-bug-in-JIT-when-partial-.patch diff --git a/pcre2-10.35-Fixed-a-word-boundary-check-bug-in-JIT-when-partial-.patch b/pcre2-10.35-Fixed-a-word-boundary-check-bug-in-JIT-when-partial-.patch new file mode 100644 index 0000000..355364e --- /dev/null +++ b/pcre2-10.35-Fixed-a-word-boundary-check-bug-in-JIT-when-partial-.patch @@ -0,0 +1,63 @@ +From fd5e04a35122c62584da5a9558f3b744a2d09692 Mon Sep 17 00:00:00 2001 +From: zherczeg +Date: Tue, 27 Oct 2020 08:16:04 +0000 +Subject: [PATCH] Fixed a word boundary check bug in JIT when partial matching + is enabled. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1280 6239d852-aaf2-0410-a92c-79f79f948069 +Petr Písař: Ported to 10.35. +--- + src/pcre2_jit_compile.c | 2 ++ + testdata/testinput10 | 4 ++++ + testdata/testoutput10 | 6 ++++++ + +diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c +index 04f0278..1977d28 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.25.4 + diff --git a/pcre2.spec b/pcre2.spec index 549b72f..7bc6b6f 100644 --- a/pcre2.spec +++ b/pcre2.spec @@ -9,7 +9,7 @@ #%%global rcversion RC1 Name: pcre2 Version: 10.35 -Release: %{?rcversion:0.}7%{?rcversion:.%rcversion}%{?dist} +Release: %{?rcversion:0.}8%{?rcversion:.%rcversion}%{?dist} %global myversion %{version}%{?rcversion:-%rcversion} Summary: Perl-compatible regular expression library # the library: BSD with exceptions @@ -78,6 +78,9 @@ Patch8: pcre2-10.35-Fix-Bugzilla-2642-no-match-bug-in-8-bit-mode-for-cas.pat # Fix matching a character set when JIT is enabled and both Unicode script and # Unicode class are present, upstream bug #2644, in upstream after 10.35 Patch9: pcre2-10.35-Fixed-a-bug-in-character-set-matching-when-JIT-is-en.patch +# Fix a partial matching for a word boundary in JIT mode, upstream bug #2663, +# in upstream after 10.35. +Patch10: pcre2-10.35-Fixed-a-word-boundary-check-bug-in-JIT-when-partial-.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: coreutils @@ -178,6 +181,7 @@ Utilities demonstrating PCRE2 capabilities like pcre2grep or pcre2test. %patch7 -p1 %patch8 -p1 %patch9 -p1 +%patch10 -p1 # Because of multilib patch libtoolize --copy --force autoreconf -vif @@ -291,6 +295,9 @@ make %{?_smp_mflags} check VERBOSE=yes %{_mandir}/man1/pcre2test.* %changelog +* Tue Oct 27 2020 Petr Pisar - 10.35-8 +- Fix a partial matching for a word boundary in JIT mode (upstream bug #2663) + * Mon Sep 21 2020 Petr Pisar - 10.35-7 - Fix matching a character set when JIT is enabled and both Unicode script and Unicode class are present (upstream bug #2644)