Compare commits

...

No commits in common. "c9s" and "c8" have entirely different histories.
c9s ... c8

20 changed files with 449 additions and 681 deletions

41
.gitignore vendored
View File

@ -1,40 +1 @@
/pcre2-10.10.tar.bz2
/pcre2-10.20-RC1.tar.bz2
/pcre2-10.20.tar.bz2
/pcre2-10.21-RC1.tar.bz2
/pcre2-10.21.tar.bz2
/pcre2-10.22-RC1.tar.bz2
/pcre2-10.22.tar.bz2
/pcre2-10.23-RC1.tar.bz2
/pcre2-10.23.tar.bz2
/pcre2-10.30-RC1.tar.bz2
/pcre2-10.30.tar.bz2
/pcre2-10.31-RC1.tar.bz2
/pcre2-10.31.tar.bz2
/pcre2-10.32-RC1.tar.bz2
/pcre2-10.32.tar.bz2
/pcre2-10.33-RC1.tar.bz2
/pcre2-10.33.tar.bz2
/pcre2-10.33.tar.bz2.sig
/pcre2-10.34-RC1.tar.bz2
/pcre2-10.34-RC1.tar.bz2.sig
/pcre2-10.34-RC2.tar.bz2
/pcre2-10.34-RC2.tar.bz2.sig
/pcre2-10.34.tar.bz2
/pcre2-10.34.tar.bz2.sig
/pcre2-10.35-RC1.tar.bz2
/pcre2-10.35-RC1.tar.bz2.sig
/pcre2-10.35.tar.bz2
/pcre2-10.35.tar.bz2.sig
/pcre2-10.36-RC1.tar.bz2
/pcre2-10.36-RC1.tar.bz2.sig
/pcre2-10.36.tar.bz2
/pcre2-10.36.tar.bz2.sig
/pcre2-10.37.tar.bz2
/pcre2-10.37.tar.bz2.sig
/pcre2-10.38.tar.bz2
/pcre2-10.38.tar.bz2.sig
/pcre2-10.39.tar.bz2
/pcre2-10.39.tar.bz2.sig
/pcre2-10.40.tar.bz2
/pcre2-10.40.tar.bz2.sig
SOURCES/pcre2-10.32.tar.bz2

1
.pcre2.metadata Normal file
View File

@ -0,0 +1 @@
31dea762ff549cda09b7df33648f9d4cc3707cf8 SOURCES/pcre2-10.32.tar.bz2

View File

@ -1,39 +0,0 @@
This is Philip Hazel's public GPG key.
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.0 (SunOS)
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
nmq1bbjAU4QVuIS9nkk2GrGx5+N6cYMy8JqG
=EHsz
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -0,0 +1,21 @@
--- pcre2-10.32/src/pcre2_jit_compile.c.old 2022-05-13 09:13:06.188574517 +0000
+++ pcre2-10.32/src/pcre2_jit_compile.c 2022-05-13 09:27:57.189574517 +0000
@@ -6494,7 +6494,7 @@ while (*cc != XCL_END)
{
SLJIT_ASSERT(*cc == XCL_PROP || *cc == XCL_NOTPROP);
cc++;
- if (*cc == PT_CLIST)
+ if (*cc == PT_CLIST && cc[-1] == XCL_PROP)
{
other_cases = PRIV(ucd_caseless_sets) + cc[1];
while (*other_cases != NOTACHAR)
--- pcre2-10.32/src/pcre2_jit_test.c.old 2022-05-13 09:29:27.531574517 +0000
+++ pcre2-10.32/src/pcre2_jit_test.c 2022-05-13 09:32:50.666574517 +0000
@@ -397,6 +397,7 @@ static struct regression_test_case regre
{ MUP, A, 0, 0 | F_PROPERTY, "[\xc3\xa2-\xc3\xa6\xc3\x81-\xc3\x84\xe2\x80\xa8-\xe2\x80\xa9\xe6\x92\xad\\p{Zs}]{2,}", "\xe2\x80\xa7\xe2\x80\xa9\xe6\x92\xad \xe6\x92\xae" },
{ MUP, A, 0, 0 | F_PROPERTY, "[\\P{L&}]{2}[^\xc2\x85-\xc2\x89\\p{Ll}\\p{Lu}]{2}", "\xc3\xa9\xe6\x92\xad.a\xe6\x92\xad|\xc2\x8a#" },
{ PCRE2_UCP, 0, 0, 0 | F_PROPERTY, "[a-b\\s]{2,5}[^a]", "AB baaa" },
+ { CMUP, 0, 0, 0, "[^S]\\B", "\xe2\x80\x8a" },
/* Possible empty brackets. */
{ MU, A, 0, 0, "(?:|ab||bc|a)+d", "abcxabcabd" },

View File

@ -0,0 +1,53 @@
From dd9e5dc97b897fdec64525560131c1ffb8d8a4d4 Mon Sep 17 00:00:00 2001
From: zherczeg <zherczeg@6239d852-aaf2-0410-a92c-79f79f948069>
Date: Fri, 21 Sep 2018 07:24:34 +0000
Subject: [PATCH] Fix an xclass matching issue in JIT.
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@1016 6239d852-aaf2-0410-a92c-79f79f948069
Petr Písař: Ported to 10.32.
---
src/pcre2_jit_compile.c | 6 +++---
src/pcre2_jit_test.c | 1 +
diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c
index 2c49f1c..4e69e76 100644
--- a/src/pcre2_jit_compile.c
+++ b/src/pcre2_jit_compile.c
@@ -7012,9 +7012,6 @@ int i, j, k, len, c;
if (!sljit_has_cpu_feature(SLJIT_HAS_CMOV))
return FALSE;
-if (invert)
- nclass = !nclass;
-
len = 0;
for (i = 0; i < 32; i++)
@@ -7096,6 +7093,9 @@ if (j != 0)
}
}
+if (invert)
+ nclass = !nclass;
+
type = nclass ? SLJIT_NOT_EQUAL : SLJIT_EQUAL;
add_jump(compiler, backtracks, CMP(type, TMP2, 0, SLJIT_IMM, 0));
return TRUE;
diff --git a/src/pcre2_jit_test.c b/src/pcre2_jit_test.c
index d5f4a96..10c064e 100644
--- a/src/pcre2_jit_test.c
+++ b/src/pcre2_jit_test.c
@@ -383,6 +383,7 @@ static struct regression_test_case regression_test_cases[] = {
{ MU, A, 0, 0, "[^\\x{801}-\\x{fffe}]+", "\xe0\xa0\x81#\xc3\xa9\xf0\x90\x90\x80\xe0\xa0\x80\xef\xbf\xbf\xef\xbf\xbe" },
{ MU, A, 0, 0, "[\\x{10001}-\\x{10fffe}]+", "#\xc3\xa9\xe2\xb1\xa5\xf0\x90\x80\x80\xf0\x90\x80\x81\xf4\x8f\xbf\xbe\xf4\x8f\xbf\xbf" },
{ MU, A, 0, 0, "[^\\x{10001}-\\x{10fffe}]+", "\xf0\x90\x80\x81#\xc3\xa9\xe2\xb1\xa5\xf0\x90\x80\x80\xf4\x8f\xbf\xbf\xf4\x8f\xbf\xbe" },
+ { CMU, A, 0, 0 | F_NOMATCH, "^[\\x{0100}-\\x{017f}]", " " },
/* Unicode properties. */
{ MUP, A, 0, 0, "[1-5\xc3\xa9\\w]", "\xc3\xa1_" },
--
2.17.1

View File

@ -0,0 +1,45 @@
From 01d8a82b6333fac75799f475e1d543c2ba6d6744 Mon Sep 17 00:00:00 2001
From: ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069>
Date: Mon, 13 May 2019 16:26:17 +0000
Subject: [PATCH] Fix crash when \X is used without UTF in JIT.
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@1091 6239d852-aaf2-0410-a92c-79f79f948069
Petr Písař: Ported to 10.32.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
testdata/testinput4 | 3 +++
testdata/testoutput4 | 4 ++++
2 files changed, 7 insertions(+)
diff --git a/testdata/testinput4 b/testdata/testinput4
index a27b6af..8592666 100644
--- a/testdata/testinput4
+++ b/testdata/testinput4
@@ -2318,4 +2318,7 @@
/[^\x{100}-\x{ffff}]*[\x80-\xff]/i,utf
\x{99}\x{99}\x{99}
+/\X*/
+ \xF3aaa\xE4\xEA\xEB\xFEa
+
# End of testinput4
diff --git a/testdata/testoutput4 b/testdata/testoutput4
index ba3df37..0291149 100644
--- a/testdata/testoutput4
+++ b/testdata/testoutput4
@@ -3742,4 +3742,8 @@ No match
\x{99}\x{99}\x{99}
0: \x{99}\x{99}\x{99}
+/\X*/
+ \xF3aaa\xE4\xEA\xEB\xFEa
+ 0: \xf3aaa\xe4\xea\xeb\xfea
+
# End of testinput4
--
2.20.1

View File

@ -0,0 +1,67 @@
From 18ee5a9d3779f5e8ee3142326dd65ae75b22bb0b Mon Sep 17 00:00:00 2001
From: ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069>
Date: Mon, 22 Oct 2018 16:47:55 +0000
Subject: [PATCH] Fix heap limit checking overflow bug in pcre2_dfa_match().
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@1034 6239d852-aaf2-0410-a92c-79f79f948069
Petr Písař: Ported to 10.32.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
src/pcre2_dfa_match.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/pcre2_dfa_match.c b/src/pcre2_dfa_match.c
index 9b43237..818004d 100644
--- a/src/pcre2_dfa_match.c
+++ b/src/pcre2_dfa_match.c
@@ -316,8 +316,8 @@ finding the minimum heap requirement for a match. */
typedef struct RWS_anchor {
struct RWS_anchor *next;
- unsigned int size; /* Number of ints */
- unsigned int free; /* Number of ints */
+ uint32_t size; /* Number of ints */
+ uint32_t free; /* Number of ints */
} RWS_anchor;
#define RWS_ANCHOR_SIZE (sizeof(RWS_anchor)/sizeof(int))
@@ -413,20 +413,24 @@ if (rws->next != NULL)
new = rws->next;
}
-/* All sizes are in units of sizeof(int), except for mb->heaplimit, which is in
-kibibytes. */
+/* Sizes in the RWS_anchor blocks are in units of sizeof(int), but
+mb->heap_limit and mb->heap_used are in kibibytes. Play carefully, to avoid
+overflow. */
else
{
- unsigned int newsize = rws->size * 2;
- unsigned int heapleft = (unsigned int)
- (((1024/sizeof(int))*mb->heap_limit - mb->heap_used));
- if (newsize > heapleft) newsize = heapleft;
+ uint32_t newsize = (rws->size >= UINT32_MAX/2)? UINT32_MAX/2 : rws->size * 2;
+ uint32_t newsizeK = newsize/(1024/sizeof(int));
+
+ if (newsizeK + mb->heap_used > mb->heap_limit)
+ newsizeK = mb->heap_limit - mb->heap_used;
+ newsize = newsizeK*(1024/sizeof(int));
+
if (newsize < RWS_RSIZE + ovecsize + RWS_ANCHOR_SIZE)
return PCRE2_ERROR_HEAPLIMIT;
new = mb->memctl.malloc(newsize*sizeof(int), mb->memctl.memory_data);
if (new == NULL) return PCRE2_ERROR_NOMEMORY;
- mb->heap_used += newsize;
+ mb->heap_used += newsizeK;
new->next = NULL;
new->size = newsize;
rws->next = new;
--
2.17.2

View File

@ -0,0 +1,34 @@
From f3b9337a2280db816ef6b2cbe3750b2991944c22 Mon Sep 17 00:00:00 2001
From: zherczeg <zherczeg@6239d852-aaf2-0410-a92c-79f79f948069>
Date: Tue, 18 Sep 2018 10:19:14 +0000
Subject: [PATCH] Fix subject buffer overread in JIT. Found by Yunho Kim.
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@1011 6239d852-aaf2-0410-a92c-79f79f948069
Petr Písař: Ported to 10.32. The tests were removed because they need
a new test framework not availanble in 10.32.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
src/pcre2_jit_compile.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c
index 32e985b..b3015cc 100644
--- a/src/pcre2_jit_compile.c
+++ b/src/pcre2_jit_compile.c
@@ -9951,7 +9951,7 @@ if (exact > 1)
#ifdef SUPPORT_UNICODE
&& !common->utf
#endif
- )
+ && type != OP_ANYNL && type != OP_EXTUNI)
{
OP2(SLJIT_ADD, TMP1, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(exact));
add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_GREATER, TMP1, 0, STR_END, 0));
--
2.17.1

View File

@ -0,0 +1,112 @@
From 977cdd668535a54fc8a13ce4a92d9866503b21ea Mon Sep 17 00:00:00 2001
From: ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069>
Date: Sat, 20 Oct 2018 09:28:02 +0000
Subject: [PATCH] Fix zero-repeated subroutine call at start of pattern bug,
which recorded an incorrect first code unit.
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@1032 6239d852-aaf2-0410-a92c-79f79f948069
Petr Písař: Ported to 10.32.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
src/pcre2_compile.c | 8 +++++---
testdata/testinput1 | 15 +++++++++++++++
testdata/testoutput1 | 24 ++++++++++++++++++++++++
3 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c
index 6bb1de3..50dfd47 100644
--- a/src/pcre2_compile.c
+++ b/src/pcre2_compile.c
@@ -5901,7 +5901,7 @@ for (;; pptr++)
}
goto GROUP_PROCESS_NOTE_EMPTY;
- /* The DEFINE condition is always false. It's internal groups may never
+ /* The DEFINE condition is always false. Its internal groups may never
be called, so matched_char must remain false, hence the jump to
GROUP_PROCESS rather than GROUP_PROCESS_NOTE_EMPTY. */
@@ -6237,8 +6237,8 @@ for (;; pptr++)
groupnumber = ng->number;
/* For a recursion, that's all that is needed. We can now go to
- the code above that handles numerical recursion, applying it to
- the first group with the given name. */
+ the code that handles numerical recursion, applying it to the first
+ group with the given name. */
if (meta == META_RECURSE_BYNAME)
{
@@ -7286,6 +7286,8 @@ for (;; pptr++)
groupsetfirstcu = FALSE;
cb->had_recurse = TRUE;
if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
+ zerofirstcu = firstcu;
+ zerofirstcuflags = firstcuflags;
break;
diff --git a/testdata/testinput1 b/testdata/testinput1
index d8615ee..fce38b2 100644
--- a/testdata/testinput1
+++ b/testdata/testinput1
@@ -6263,4 +6263,19 @@ ef) x/x,mark
aBCDEF
AbCDe f
+/ (?<word> \w+ )* \. /xi
+ pokus.
+
+/(?(DEFINE) (?<word> \w+ ) ) (?&word)* \./xi
+ pokus.
+
+/(?(DEFINE) (?<word> \w+ ) ) ( (?&word)* ) \./xi
+ pokus.
+
+/(?&word)* (?(DEFINE) (?<word> \w+ ) ) \./xi
+ pokus.
+
+/(?&word)* \. (?<word> \w+ )/xi
+ pokus.hokus
+
# End of testinput1
diff --git a/testdata/testoutput1 b/testdata/testoutput1
index 77b9ff0..ff88775 100644
--- a/testdata/testoutput1
+++ b/testdata/testoutput1
@@ -9929,4 +9929,28 @@ No match
AbCDe f
No match
+/ (?<word> \w+ )* \. /xi
+ pokus.
+ 0: pokus.
+ 1: pokus
+
+/(?(DEFINE) (?<word> \w+ ) ) (?&word)* \./xi
+ pokus.
+ 0: pokus.
+
+/(?(DEFINE) (?<word> \w+ ) ) ( (?&word)* ) \./xi
+ pokus.
+ 0: pokus.
+ 1: <unset>
+ 2: pokus
+
+/(?&word)* (?(DEFINE) (?<word> \w+ ) ) \./xi
+ pokus.
+ 0: pokus.
+
+/(?&word)* \. (?<word> \w+ )/xi
+ pokus.hokus
+ 0: pokus.hokus
+ 1: hokus
+
# End of testinput1
--
2.17.2

View File

@ -0,0 +1,35 @@
From 79fb8db65fa27070aac6dde8d6d468306ab6b9a9 Mon Sep 17 00:00:00 2001
From: ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069>
Date: Mon, 13 May 2019 16:38:18 +0000
Subject: [PATCH] Forgot this file in previous commit. Fixes JIT non-UTF bug.
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@1092 6239d852-aaf2-0410-a92c-79f79f948069
Petr Písař: Ported to 10.32.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
src/pcre2_jit_compile.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c
index 3cd3891..100b63c 100644
--- a/src/pcre2_jit_compile.c
+++ b/src/pcre2_jit_compile.c
@@ -7288,7 +7288,10 @@ int lgb, rgb, ricount;
PCRE2_SPTR bptr;
uint32_t c;
-GETCHARINC(c, cc);
+/* Patch by PH */
+/* GETCHARINC(c, cc); */
+
+c = *cc++;
lgb = UCD_GRAPHBREAK(c);
while (cc < end_subject)
--
2.20.1

View File

@ -8,8 +8,8 @@
# This is stable release:
#%%global rcversion RC1
Name: pcre2
Version: 10.40
Release: %{?rcversion:0.}6%{?rcversion:.%rcversion}%{?dist}
Version: 10.32
Release: %{?rcversion:0.}3%{?rcversion:.%rcversion}%{?dist}
%global myversion %{version}%{?rcversion:-%rcversion}
Summary: Perl-compatible regular expression library
# the library: BSD with exceptions
@ -45,34 +45,43 @@ Summary: Perl-compatible regular expression library
# test-driver: GPLv2+ with exception
# testdata: Public Domain
License: BSD
URL: https://www.pcre.org/
Source0: https://ftp.pcre.org/pub/pcre/%{?rcversion:Testing/}%{name}-%{myversion}.tar.bz2
Source1: https://ftp.pcre.org/pub/pcre/%{?rcversion:Testing/}%{name}-%{myversion}.tar.bz2.sig
Source2: https://ftp.pcre.org/pub/pcre/Public-Key
URL: http://www.pcre.org/
Source: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/%{?rcversion:Testing/}%{name}-%{myversion}.tar.bz2
# Do no set RPATH if libdir is not /usr/lib
Patch0: pcre2-10.10-Fix-multilib.patch
# Upstream patch: https://github.com/PCRE2Project/pcre2/commit/4851890ede31313655e19180f4959ed348fee580
Patch1: pcre2-10.40-Fix-JIT-regression-in-PHP.patch
# Upstream commits:
# https://github.com/PCRE2Project/pcre2/commit/794245ecc296724b52f5030831e58bedbffa2452
# https://github.com/PCRE2Project/pcre2/commit/457c0e69a8f78d32bc7d4b6422cd01e396a4cf5d
Patch2: pcre2-10.42-Match-also-restore-originally-unset-entries-in-recur.patch
Patch3: pcre2-10.42-Add-more-examples-fixed-by-300.patch
# Upstream patch: https://github.com/PCRE2Project/pcre2/commit/f2411acb3711a44497539d17b245bd366d9c26d7
Patch4: pcre2-10.42-jit-fail-early-in-ffcps_-if-subject.patch
# Fix a subject buffer overread in JIT when UTF is disabled and \X or \R has
# a greater than 1 fixed quantifier, upstream bug #2320, bug#1628200,
# in upstream after 10.32
Patch1: pcre2-10.32-Fix-subject-buffer-overread-in-JIT.-Found-by-Yunho-K.patch
# Fix caseless matching an extended class in JIT mode, upstream bug #2321,
# bug #1617960, in upstream after 10.32
Patch2: pcre2-10.32-Fix-an-xclass-matching-issue-in-JIT.patch
# Fix matching a zero-repeated subroutine call at a start of a pattern,
# upstream bug #2332, bug: #1628200, in upstream after 10.32
Patch3: pcre2-10.32-Fix-zero-repeated-subroutine-call-at-start-of-patter.patch
# Fix heap limit checking overflow in pcre2_dfa_match(), upstream bug #2334,
# bug#1628200, in upstream after 10.32
Patch4: pcre2-10.32-Fix-heap-limit-checking-overflow-bug-in-pcre2_dfa_ma.patch
# 1/2 Fix CVE-2019-20454 (a crash when \X is used without UTF mode in a JIT),
# upstream bug #2399, bug #1734468, in upstream after 10.33
Patch5: pcre2-10.32-Fix-crash-when-X-is-used-without-UTF-in-JIT.patch
# 2/2 Fix CVE-2019-20454 (a crash when \X is used without UTF mode in a JIT),
# upstream bug #2399, bug #1734468, in upstream after 10.33
Patch6: pcre2-10.32-Forgot-this-file-in-previous-commit.-Fixes-JIT-non-U.patch
# Fix CVE-2022-1586 (Out-of-bounds read in compile_xclass_matchingpath)
# Downstream patch backport
# Ref: https://github.com/PCRE2Project/pcre2/commit/50a51cb7e67268e6ad417eb07c9de9bfea5cc55a
# https://github.com/PCRE2Project/pcre2/commit/d4fa336fbcc388f89095b184ba6d99422cfc676c
Patch7: pcre2-10.32-Fix-CVE-2022-1586
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: coreutils
BuildRequires: gcc
BuildRequires: gnupg2
BuildRequires: libtool
BuildRequires: make
%if %{with pcre2_enables_readline}
BuildRequires: readline-devel
%endif
BuildRequires: sed
Requires: %{name}-syntax = %{version}-%{release}
Provides: bundled(sljit)
%description
@ -96,7 +105,6 @@ restricted, and does not give full access to all of PCRE2's facilities.
%package utf16
Summary: UTF-16 variant of PCRE2
Provides: bundled(sljit)
Requires: %{name}-syntax = %{version}-%{release}
Conflicts: %{name}%{?_isa} < 10.21-4
%description utf16
@ -105,7 +113,6 @@ This is PCRE2 library working on UTF-16 strings.
%package utf32
Summary: UTF-32 variant of PCRE2
Provides: bundled(sljit)
Requires: %{name}-syntax = %{version}-%{release}
Conflicts: %{name}%{?_isa} < 10.21-4
%description utf32
@ -130,30 +137,25 @@ Provides: bundled(sljit)
%description static
Library for static linking for %{name}.
%package syntax
Summary: Documentation for PCRE2 regular expressions
BuildArch: noarch
Conflicts: %{name}-devel < 10.34-8
%description syntax
This is a set of manual pages that document a syntax of the regular
expressions implemented by the PCRE2 library.
%package tools
Summary: Auxiliary utilities for %{name}
# pcre2test (linked to GNU readline): BSD (linked to GPLv3+)
License: BSD and GPLv3+
Requires: %{name}%{_isa} = %{version}-%{release}
Requires: %{name}-utf32 = %{version}-%{release}
Requires: %{name}-utf16 = %{version}-%{release}
%description tools
Utilities demonstrating PCRE2 capabilities like pcre2grep or pcre2test.
%prep
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
%autosetup -n %{name}-%{myversion} -p1
%setup -q -n %{name}-%{myversion}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
# Because of multilib patch
libtoolize --copy --force
autoreconf -vif
@ -164,7 +166,7 @@ autoreconf -vif
%global optflags %{optflags} -fno-strict-aliasing
%endif
%configure \
%ifarch s390 sparc64 sparcv9 riscv64
%ifarch s390 s390x sparc64 sparcv9 riscv64
--disable-jit \
--disable-pcre2grep-jit \
%else
@ -186,7 +188,6 @@ autoreconf -vif
--enable-pcre2-16 \
--enable-pcre2-32 \
--enable-pcre2grep-callout \
--enable-pcre2grep-callout-fork \
--disable-pcre2grep-libbz2 \
--disable-pcre2grep-libz \
--disable-pcre2test-libedit \
@ -195,17 +196,16 @@ autoreconf -vif
%else
--disable-pcre2test-libreadline \
%endif
--enable-percent-zt \
--disable-rebuild-chartables \
--enable-shared \
--disable-silent-rules \
--enable-static \
--enable-unicode \
--disable-valgrind
%{make_build}
make %{?_smp_mflags}
%install
%{make_install}
make install DESTDIR=$RPM_BUILD_ROOT
# Get rid of unneeded *.la files
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
# These are handled by %%doc in %%files
@ -214,52 +214,42 @@ rm -rf $RPM_BUILD_ROOT%{_docdir}/pcre2
%check
make %{?_smp_mflags} check VERBOSE=yes
%ldconfig_scriptlets
%ldconfig_scriptlets utf16
%ldconfig_scriptlets utf32
%files
%{_libdir}/libpcre2-8.so.0*
%{_libdir}/libpcre2-posix.so.3*
%{_libdir}/libpcre2-8.so.*
%{_libdir}/libpcre2-posix.so.*
%{!?_licensedir:%global license %%doc}
%license COPYING LICENCE
%doc AUTHORS ChangeLog NEWS
%files utf16
%{_libdir}/libpcre2-16.so.0*
%{_libdir}/libpcre2-16.so.*
%license COPYING LICENCE
%doc AUTHORS ChangeLog NEWS
%files utf32
%{_libdir}/libpcre2-32.so.0*
%{_libdir}/libpcre2-32.so.*
%license COPYING LICENCE
%doc AUTHORS ChangeLog NEWS
%files devel
%{_libdir}/*.so
%{_libdir}/pkgconfig/*
%{_includedir}/*.h
%{_mandir}/man1/pcre2-config.*
%{_mandir}/man3/pcre2_*
%{_mandir}/man3/pcre2api.*
%{_mandir}/man3/pcre2build.*
%{_mandir}/man3/pcre2callout.*
%{_mandir}/man3/pcre2convert.*
%{_mandir}/man3/pcre2demo.*
%{_mandir}/man3/pcre2jit.*
%{_mandir}/man3/pcre2posix.*
%{_mandir}/man3/pcre2sample.*
%{_mandir}/man3/pcre2serialize*
%{_mandir}/man3/*
%{_bindir}/pcre2-config
%doc doc/*.txt doc/html
%doc README HACKING ./src/pcre2demo.c
%files static
%{_libdir}/*.a
%{!?_licensedir:%global license %%doc}
%license COPYING LICENCE
%files syntax
%license COPYING LICENCE
%doc AUTHORS ChangeLog NEWS
%{_mandir}/man3/pcre2.*
%{_mandir}/man3/pcre2compat.*
%{_mandir}/man3/pcre2limits.*
%{_mandir}/man3/pcre2matching.*
%{_mandir}/man3/pcre2partial.*
%{_mandir}/man3/pcre2pattern.*
%{_mandir}/man3/pcre2perform.*
%{_mandir}/man3/pcre2syntax.*
%{_mandir}/man3/pcre2unicode.*
%files tools
%{_bindir}/pcre2grep
%{_bindir}/pcre2test
@ -267,309 +257,42 @@ make %{?_smp_mflags} check VERBOSE=yes
%{_mandir}/man1/pcre2test.*
%changelog
* Wed Jul 31 2024 Lukas Javorsky <ljavorsk@redhat.com> - 10.40-6
- Fix SEGFAULT caused by dereferencing subject when length==0 on aarch64
- Resolves: RHEL-51866
* Fri May 13 2022 Lukas Javorsky <ljavorsk@redhat.com> - 10.32-3
- Resolves: CVE-2022-1586
* Fri Feb 16 2024 Lukas Javorsky <ljavorsk@redhat.com> - 10.40-5
- Rebuilt for added pcre2-tools into CRB
* Mon May 13 2019 Petr Pisar <ppisar@redhat.com> - 10.32-2
- Fix CVE-2019-20454 (a crash when \X is used without UTF mode in a JIT)
(bug #1734468)
* Mon Nov 13 2023 Lukas Javorsky <ljavorsk@redhat.com> - 10.40-4
- Fix an issue with restoring originally unset entries in recursion
- Resolves: BZ#2248133
* Tue Oct 17 2023 Lukas Javorsky <ljavorsk@redhat.com> - 10.40-3
- Fix issue in the backtracking optimization of character in JIT
* Wed May 18 2022 Lukas Javorsky <ljavorsk@redhat.com> - 10.40-2
- Explicitly require uft subpackages in tools subpackage
* Fri May 13 2022 Lukas Javorsky <ljavorsk@redhat.com> - 10.40-1
- Rebase to the 10.40
- Resolves multiple Out-of-bounds read errors
* Fri May 13 2022 Lukas Javorsky <ljavorsk@redhat.com> - 10.39-1
- Rebase to the 10.39
* Fri May 13 2022 Lukas Javorsky <ljavorsk@redhat.com> - 10.38-1
- Rebase to the 10.38
- Patch 1 upstreamed
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 10.37-3.1
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Wed Aug 04 2021 Lukas Javorsky <ljavorsk@redhat.com> - 10.37-3
- Revert commit 244afd92965bc8df652c2c1711641649b5884fdc.
* Tue Jul 27 2021 Lukas Javorsky <ljavorsk@redhat.com> - 10.37-2
- Fix invalid single character repetition in JIT
- Resolves: BZ#1985484
* Tue Jun 15 2021 Lukas Javorsky <ljavorsk@redhat.com> - 10.37-1
- Rebase to the 10.37
- libpcre2-posix.so.2* SONAME bump to libpcre2-posix.so.3*
- Enable JIT for s390x arch
- Patches upstreamed: Patch 1,2,3,4
- Resolves: rhbz#1970765, BZ#1965025
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 10.36-4.1
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Fri Feb 19 2021 Petr Pisar <ppisar@redhat.com> - 10.36-4
- Fix a mismatch if \K was involved in a recursion
- Restore single character repetition optimization in JIT (upstream bug #2698)
* Tue Feb 02 2021 Petr Pisar <ppisar@redhat.com> - 10.36-3
- Fix misparsing long numbers as a backreference and a number without
a closing bracket as a quantifier (upstream bug #2690)
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 10.36-2.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Jan 15 2021 Petr Pisar <ppisar@redhat.com> - 10.36-2
- Fix a possible NULL pointer dereference in auto_possessify()
(upstream bug #2686)
* Tue Dec 15 2020 Petr Pisar <ppisar@redhat.com> - 10.36-1
- 10.36 bump
* Mon Nov 09 2020 Petr Pisar <ppisar@redhat.com> - 10.36-0.1.RC1
- 10.36-RC1 bump
* Tue Oct 27 2020 Petr Pisar <ppisar@redhat.com> - 10.35-8
- Fix a partial matching for a word boundary in JIT mode (upstream bug #2663)
* Mon Sep 21 2020 Petr Pisar <ppisar@redhat.com> - 10.35-7
- Fix matching a character set when JIT is enabled and both Unicode script and
Unicode class are present (upstream bug #2644)
* Wed Sep 16 2020 Petr Pisar <ppisar@redhat.com> - 10.35-6
- Fix escaping test data and only allow slash delimiter after perltest pragma
(upstream bug #2641)
- Fix a mismatch when caselessly searching in an invalid UTF-8 text and a start
optimization is enabled (upstream bug #2642)
* Mon Sep 14 2020 Petr Pisar <ppisar@redhat.com> - 10.35-5
- Fix escaping test data (upstream bug #2641)
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 10.35-4.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Jul 15 2020 Petr Pisar <ppisar@redhat.com> - 10.35-4
- Fix a buffer overread when parsing an unterminated VERSION condition with
a single-digit minor number at the end of a regular expression
(ClusterFuzz #23779)
- Fix an early fail optimization with character ranges and a buffer overread
in JIT (upstream bug #2621)
* Tue Jun 02 2020 Petr Pisar <ppisar@redhat.com> - 10.35-3
- Fix an infinite loop when a single-byte newline is search in JIT if an
invalid UTF-8 mode is enabled (upstream bug #2581)
* Wed May 27 2020 Petr Pisar <ppisar@redhat.com> - 10.35-2
- Enable shadow stack built-in functions if -fcf-protection compiler flag is
used by patching a build script (upstream bug #2578)
* Mon May 11 2020 Petr Pisar <ppisar@redhat.com> - 10.35-1
- 10.35 bump
* Mon Apr 27 2020 Petr Pisar <ppisar@redhat.com> - 10.35-0.2.RC1
- Fix a compiler warning about -1 index
* Thu Apr 16 2020 Petr Pisar <ppisar@redhat.com> - 10.35-0.1.RC1
- 10.35-RC1 bump
* Mon Mar 23 2020 Petr Pisar <ppisar@redhat.com> - 10.34-9
- Fix a JIT compilation of the Unicode scripts in the extended character classes
(upstream bug #2432)
* Mon Mar 16 2020 Petr Pisar <ppisar@redhat.com> - 10.34-8
- Fix computing an offest for the start of the UTF-16 error when a high
surrogate is not followed by a valid low surrogate (upstream bug #2527)
- Fix compiling a lookbehind when preceded by a DEFINE group
(upstream bug #2531)
- Make manual pages about pattern syntax available when the library is
installed (bug #1808612)
* Thu Feb 20 2020 Petr Pisar <ppisar@redhat.com> - 10.34-7
- Fix a crash in JIT when an invalid UTF-8 character is encountered in
match_invalid_utf mode (upstream bug #2529)
* Mon Feb 17 2020 Petr Pisar <ppisar@redhat.com> - 10.34-6
- Fix restoring a verb chain list when exiting a JIT-compiled recursive
function
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 10.34-5.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Jan 27 2020 Petr Pisar <ppisar@redhat.com> - 10.34-5
- Fix a memory leak when allocating a JIT stack fails
- Ensure a newline after the final line in a file is output by pcre2grep
(upstream bug #2513)
- Fix processing (?(DEFINE)...) within look-behind assertions
- Prevent from a stack exhaustion when studying a pattern for nested groups by
putting a limit of 1000 recursive calls
* Mon Jan 13 2020 Petr Pisar <ppisar@redhat.com> - 10.34-4
- Fix a crash in JITted code when a *THEN verb is used in a lookahead assertion
(upstream bug #2510)
* Mon Dec 09 2019 Petr Pisar <ppisar@redhat.com> - 10.34-3
- Fix a crash in pcre2_jit_compile when passing a NULL code argument (upstream
bug #2487)
* Thu Nov 28 2019 Petr Pisar <ppisar@redhat.com> - 10.34-2
- Fix JIT to respect NOTEMPTY options (upstream bug #2473)
* Fri Nov 22 2019 Petr Pisar <ppisar@redhat.com> - 10.34-1
- 10.34 bump
* Mon Nov 18 2019 Petr Pisar <ppisar@redhat.com> - 10.34-0.2.RC2
- Fix optimized caseless matching of non-ASCII characters in assertions
(upstream bug #2466)
* Thu Nov 07 2019 Petr Pisar <ppisar@redhat.com> - 10.34-0.1.RC2
- 10.34-RC2 bump
- Fix an infinite loop in 64-bit ARM JIT with NEON instructions
* Wed Oct 30 2019 Petr Pisar <ppisar@redhat.com> - 10.34-0.1.RC1
- 10.34-RC1 bump
* Tue Oct 29 2019 Petr Pisar <ppisar@redhat.com> - 10.33-15
- Fix a use after free when freeing JIT memory (upstream bug #2453)
- Fix thread-safeness in regexec() (upstream bug #2447)
* Mon Sep 09 2019 Petr Pisar <ppisar@redhat.com> - 10.33-14
- Fix a crash in JIT match when a subject has a zero length and an invalid
pointer (upstream bug #2440)
* Tue Aug 27 2019 Petr Pisar <ppisar@redhat.com> - 10.33-13
- Readd a fix for a mismatch with a lookbehind within a lookahead within
a lookbehind and fix the regression in matching a lookbehind after
a condition (bug #1743863)
* Mon Aug 26 2019 Petr Pisar <ppisar@redhat.com> - 10.33-12
- Revert a fix for a mismatch with a lookbehind within a lookahead within
a lookbehind (bug #1743863)
* Mon Aug 12 2019 Petr Pisar <ppisar@redhat.com> - 10.33-11
- Fix reporting rightmost consulted characters
* Mon Aug 05 2019 Petr Pisar <ppisar@redhat.com> - 10.33-10
- Fix an incorrect computation of a group length when a branch exceeds 65535
(upstream bug #2428)
- Use HTTPS protocol in URL metadata
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 10.33-9.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Mon Jul 22 2019 Petr Pisar <ppisar@redhat.com> - 10.33-9
- Fix a recursion in compiling an expression with a lookbehind within a
lookahead (upstream bug #2412)
* Wed Jul 17 2019 Petr Pisar <ppisar@redhat.com> - 10.33-8
- Fix a mismatch with a lookbehind within a lookahead within a lookbehind
(upstream bug #2412)
* Thu Jul 11 2019 Petr Pisar <ppisar@redhat.com> - 10.33-7
- Fix an integer overflow when checking a lookbehind length
* Wed Jul 03 2019 Petr Pisar <ppisar@redhat.com> - 10.33-6
- Fix a DFA to recognize a partial match if the end of a subject is encountered
in a lookahead, an atomic group, or a recursion
* Thu Jun 20 2019 Petr Pisar <ppisar@redhat.com> - 10.33-5
- Do not ignore {1} quantifier when it is applied to a non-possessive group
with more alternatives
* Mon Jun 17 2019 Petr Pisar <ppisar@redhat.com> - 10.33-4
- Fix a non-JIT match to return (*MARK) names from a successful conditional
assertion
- Fix pcre2grep --only-matching output when number of capturing groups exceeds
32 (upstream bug #2407)
* Mon May 13 2019 Petr Pisar <ppisar@redhat.com> - 10.33-3
- Correct a misspelling in a documentation
- Fix a crash when \X is used without UTF mode in a JIT (upstream bug #2399)
* Mon May 06 2019 Petr Pisar <ppisar@redhat.com> - 10.33-2
- Validate number of capturing parentheses
* Tue Apr 16 2019 Petr Pisar <ppisar@redhat.com> - 10.33-1
- 10.33 bump
* Tue Mar 26 2019 Petr Pisar <ppisar@redhat.com> - 10.33-0.4.RC1
- Do not use SSE2 instructions on x86 CPUs without SSE2 support
(upstream bug #2385)
* Wed Mar 13 2019 Petr Pisar <ppisar@redhat.com> - 10.33-0.3.RC1
- Use upstream fix for a crash in pcre2_substitute() function if mcontext
argument is NULL (bug #1686434)
* Mon Mar 11 2019 Petr Pisar <ppisar@redhat.com> - 10.33-0.2.RC1
- Fix a crash in pcre2_substitute() function if mcontext argument is NULL
(bug #1686434)
* Tue Mar 05 2019 Petr Pisar <ppisar@redhat.com> - 10.33-0.1.RC1
- 10.33-RC1 bump
* Fri Feb 22 2019 Petr Pisar <ppisar@redhat.com> - 10.32-8
- Fix pcre2_pattern_info() documentation (upstream bug #2373)
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 10.32-7.1
- Rebuild for readline 8.0
* Thu Jan 31 2019 Petr Pisar <ppisar@redhat.com> - 10.32-7
- Fix version conditions in DFA engine (upstream bug #2367)
- Use an upstream fix for POSIX names as macros (bug #1667614)
* Tue Jan 22 2019 Petr Pisar <ppisar@redhat.com> - 10.32-6
- Link applications to PCRE2-specific symbols when using POSIX API (bug #1667614)
* Thu Jan 03 2019 Petr Pisar <ppisar@redhat.com> - 10.32-5
- Fix anchoring a pattern preceded with (*MARK)
- Fix OpenPOWER 64-bit ELFv2 ABI detection in JIT compiler (upstream bug #2353)
- Fix an undefined behavior in aarch64 JIT compiler (upstream bug #2355)
* Thu Nov 01 2018 Petr Pisar <ppisar@redhat.com> - 10.32-4
- Fix matching a zero-repeated subroutine call at a start of a pattern
(upstream bug #2332)
- Fix heap limit checking overflow in pcre2_dfa_match() (upstream bug #2334)
* Mon Sep 24 2018 Petr Pisar <ppisar@redhat.com> - 10.32-3
- Fix caseless matching an extended class in JIT mode (upstream bug #2321)
* Tue Sep 18 2018 Petr Pisar <ppisar@redhat.com> - 10.32-2
* Fri Dec 07 2018 Petr Pisar <ppisar@redhat.com> - 10.32-1
- 10.32 bump (bug #1628200)
- Fix a subject buffer overread in JIT when UTF is disabled and \X or \R has
a greater than 1 fixed quantifier (upstream bug #2320)
a greater than 1 fixed quantifier (bug #1628200)
- Fix matching a zero-repeated subroutine call at a start of a pattern
(bug #1628200)
- Fix heap limit checking overflow in pcre2_dfa_match() (bug #1628200)
* Wed Sep 12 2018 Petr Pisar <ppisar@redhat.com> - 10.32-1
- 10.32 bump
* Mon Sep 24 2018 Petr Pisar <ppisar@redhat.com> - 10.31-11
- Fix caseless matching an extended class in JIT mode (bug #1617960)
* Mon Sep 03 2018 Petr Pisar <ppisar@redhat.com> - 10.32-0.3.RC1
- Accept \N{U+hhhh} only in UTF mode (upstream bug #2305)
- Fix anchoring in conditionals with only one branch (upstream bug #2307)
* Mon Aug 20 2018 Petr Pisar <ppisar@redhat.com> - 10.32-0.2.RC1
- Fix autopossessifying a repeated negative class with no characters less than
256 that is followed by a positive class with only characters less than 256,
(upstream bug #2300)
* Thu Aug 16 2018 Petr Pisar <ppisar@redhat.com> - 10.32-0.1.RC1
- 10.32-RC1 bump
* Mon Sep 03 2018 Petr Pisar <ppisar@redhat.com> - 10.31-10
- Fix anchoring in conditionals with only one branch (bug #1617960)
* Thu Aug 16 2018 Petr Pisar <ppisar@redhat.com> - 10.31-9
- Recognize all Unicode space characters with /x option in a pattern
- Fix changing dynamic options
(bug #1617960)
- Fix changing dynamic options (bug #1617960)
- Fix autopossessifying a repeated negative class with no characters less than
256 that is followed by a positive class with only characters less than 255,
(bug #1617960)
- Fix autopossessifying a repeated negative class with no characters less than
256 that is followed by a positive class with only characters less than 256,
(bug #1617960)
* Tue Jul 31 2018 Petr Pisar <ppisar@redhat.com> - 10.31-8
- Fix backtracking atomic groups when they are not separated by something with
a backtracking point
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 10.31-7.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Jul 09 2018 Petr Pisar <ppisar@redhat.com> - 10.31-7
- Fix checking that a lookbehind assertion has a fixed length if the
lookbehind assertion is used inside a lookahead assertion

View File

@ -1,9 +0,0 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier2.functional}
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier3.functional}
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.acceptance-tier.functional}

View File

@ -1,60 +0,0 @@
From 44a4e60e0ad45d4c60b7da10e9e9531da75bb9a4 Mon Sep 17 00:00:00 2001
From: Zoltan Herczeg <hzmester@freemail.hu>
Date: Tue, 12 Jul 2022 08:35:38 +0000
Subject: [PATCH] Fixed an issue in the backtracking optimization of character
repeats in JIT
---
src/pcre2_jit_compile.c | 20 ++++++++++----------
src/pcre2_jit_test.c | 1 +
3 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c
index e638c24..b3cffbe 100644
--- a/src/pcre2_jit_compile.c
+++ b/src/pcre2_jit_compile.c
@@ -11517,19 +11517,19 @@ if (exact > 1)
}
}
else if (exact == 1)
- {
compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks, TRUE);
- if (early_fail_type == type_fail_range)
- {
- OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_SP), early_fail_ptr);
- OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_SP), early_fail_ptr + (int)sizeof(sljit_sw));
- OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, TMP2, 0);
- OP2(SLJIT_SUB, TMP2, 0, STR_PTR, 0, TMP2, 0);
- add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_LESS_EQUAL, TMP2, 0, TMP1, 0));
+if (early_fail_type == type_fail_range)
+ {
+ /* Range end first, followed by range start. */
+ OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_SP), early_fail_ptr);
+ OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_SP), early_fail_ptr + (int)sizeof(sljit_sw));
+ OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, TMP2, 0);
+ OP2(SLJIT_SUB, TMP2, 0, STR_PTR, 0, TMP2, 0);
+ add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_LESS_EQUAL, TMP2, 0, TMP1, 0));
- OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), early_fail_ptr + (int)sizeof(sljit_sw), STR_PTR, 0);
- }
+ OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), early_fail_ptr, STR_PTR, 0);
+ OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), early_fail_ptr + (int)sizeof(sljit_sw), STR_PTR, 0);
}
switch(opcode)
diff --git a/src/pcre2_jit_test.c b/src/pcre2_jit_test.c
index bb141a0..81c9582 100644
--- a/src/pcre2_jit_test.c
+++ b/src/pcre2_jit_test.c
@@ -354,6 +354,7 @@ static struct regression_test_case regression_test_cases[] = {
{ MU, A, 0, 0, "_[ab]+_*a", "_aa" },
{ MU, A, 0, 0, "#(A+)#\\d+", "#A#A#0" },
{ MU, A, 0, 0, "(?P<size>\\d+)m|M", "4M" },
+ { M, PCRE2_NEWLINE_CRLF, 0, 0, "\\n?.+#", "\n,\n,#" },
/* Bracket repeats with limit. */
{ MU, A, 0, 0, "(?:(ab){2}){5}M", "abababababababababababM" },
--
2.41.0

View File

@ -1,65 +0,0 @@
From 457c0e69a8f78d32bc7d4b6422cd01e396a4cf5d Mon Sep 17 00:00:00 2001
From: Philip Hazel <Philip.Hazel@gmail.com>
Date: Tue, 3 Oct 2023 16:52:56 +0100
Subject: [PATCH] Add more examples fixed by #300; update ChangeLog
---
testdata/testinput1 | 8 ++++++++
testdata/testoutput1 | 22 ++++++++++++++++++++++
3 files changed, 34 insertions(+)
diff --git a/testdata/testinput1 b/testdata/testinput1
index 3d75a35..533389d 100644
--- a/testdata/testinput1
+++ b/testdata/testinput1
@@ -4374,6 +4374,14 @@
/(?<all>(?:(?:a(?&all))|(b))(c?))/
aabc
+
+/(a(b)|(c))(?1)/
+ abc
+ cab
+
+/(?1)(a(b)|(c))/
+ abc
+ cab
/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
(?(DEFINE)
diff --git a/testdata/testoutput1 b/testdata/testoutput1
index 26d3c83..bedd924 100644
--- a/testdata/testoutput1
+++ b/testdata/testoutput1
@@ -6954,6 +6954,28 @@ No match
1: aabc
2: <unset>
3:
+
+/(a(b)|(c))(?1)/
+ abc
+ 0: abc
+ 1: ab
+ 2: b
+ cab
+ 0: cab
+ 1: c
+ 2: <unset>
+ 3: c
+
+/(?1)(a(b)|(c))/
+ abc
+ 0: abc
+ 1: c
+ 2: <unset>
+ 3: c
+ cab
+ 0: cab
+ 1: ab
+ 2: b
/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
(?(DEFINE)
--
2.41.0

View File

@ -1,61 +0,0 @@
From 794245ecc296724b52f5030831e58bedbffa2452 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <carenas@gmail.com>
Date: Tue, 3 Oct 2023 08:14:23 -0700
Subject: [PATCH] match: also restore originally unset entries in recursion
(#300)
A regresion from ~10.30 not affecting JIT
---
src/pcre2_match.c | 2 +-
testdata/testinput1 | 3 +++
testdata/testoutput1 | 7 +++++++
3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/pcre2_match.c b/src/pcre2_match.c
index 5ce1792..8b57c75 100644
--- a/src/pcre2_match.c
+++ b/src/pcre2_match.c
@@ -5953,7 +5953,7 @@ fprintf(stderr, "++ op=%d\n", *Fecode);
{
P = (heapframe *)((char *)N - frame_size);
memcpy((char *)F + offsetof(heapframe, ovector), P->ovector,
- P->offset_top * sizeof(PCRE2_SIZE));
+ Foffset_top * sizeof(PCRE2_SIZE));
Foffset_top = P->offset_top;
Fcapture_last = P->capture_last;
Fcurrent_recurse = P->current_recurse;
diff --git a/testdata/testinput1 b/testdata/testinput1
index 062dfe0..3d75a35 100644
--- a/testdata/testinput1
+++ b/testdata/testinput1
@@ -4372,6 +4372,9 @@
/^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x
abcd
+/(?<all>(?:(?:a(?&all))|(b))(c?))/
+ aabc
+
/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
(?(DEFINE)
(?<NAME_PAT>[a-z]+)
diff --git a/testdata/testoutput1 b/testdata/testoutput1
index 1dc3b2f..26d3c83 100644
--- a/testdata/testoutput1
+++ b/testdata/testoutput1
@@ -6948,6 +6948,13 @@ No match
abcd
0: ab
+/(?<all>(?:(?:a(?&all))|(b))(c?))/
+ aabc
+ 0: aabc
+ 1: aabc
+ 2: <unset>
+ 3:
+
/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
(?(DEFINE)
(?<NAME_PAT>[a-z]+)
--
2.41.0

View File

@ -1,33 +0,0 @@
From f2411acb3711a44497539d17b245bd366d9c26d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <carenas@gmail.com>
Date: Mon, 12 Dec 2022 08:32:42 -0800
Subject: [PATCH] jit: fail early in ffcps_* if subject shorter than offs1
(#175)
FF_FUN would try loading a vector from an invalid address
triggering a crash.
Add the same check that is done in the x86/s390x implementations
and that was missing from the original code.
Fixes: #86
---
src/pcre2_jit_neon_inc.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/pcre2_jit_neon_inc.h b/src/pcre2_jit_neon_inc.h
index e74adf12..165602ed 100644
--- a/src/pcre2_jit_neon_inc.h
+++ b/src/pcre2_jit_neon_inc.h
@@ -183,6 +183,8 @@ restart:;
#endif
#if defined(FFCPS)
+if (str_ptr >= str_end)
+ return NULL;
sljit_u8 *p1 = str_ptr - diff;
#endif
sljit_s32 align_offset = ((uint64_t)str_ptr & 0xf);
--
2.45.1

View File

@ -1,6 +0,0 @@
from Config import *
addFilter("spelling-error .* encodings");
# sljit upstream does not make any releases
addFilter("unversioned-explicit-provides bundled\\(sljit\\)");
# Documentation is in a required pcre2-devel package
addFilter("pcre2-static.* no-documentation");

View File

@ -1,9 +0,0 @@
---
types:
# Older builds of pcre2 had some of the documentation files
# reporting as text/x-makefile with libmagic, but now they are
# text/plain. This finding can be ignored as they are just
# documentation files.
ignore:
- /usr/share/doc/pcre2-devel/README*
- /usr/share/doc/pcre2-devel/html/README*

View File

@ -1,2 +0,0 @@
SHA512 (pcre2-10.40.tar.bz2) = 00e7b48a6554b9127cb6fe24c5cacf72783416a9754ec88f62f73c52f46ed72c86c1869e62c91a31b2ff2cbafbbedabca44b3f1eb7670bc92f49d8401c7374e8
SHA512 (pcre2-10.40.tar.bz2.sig) = faa4b47fdac1543cd323651f251b8abb94b31b5966b42d445b8cbb38c441df4742e3c3517c2bc6c0a4464e9fb5feab5d5beda1250a03d56bec2d8383be2f63ab