commit 4bdcca7929c85b11833ae6ba8e628b226b668fd5 Author: CentOS Sources Date: Tue Aug 2 03:02:11 2022 -0400 import pcre2-10.32-3.el8_6 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..beafac8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/pcre2-10.32.tar.bz2 diff --git a/.pcre2.metadata b/.pcre2.metadata new file mode 100644 index 0000000..81c7aa8 --- /dev/null +++ b/.pcre2.metadata @@ -0,0 +1 @@ +31dea762ff549cda09b7df33648f9d4cc3707cf8 SOURCES/pcre2-10.32.tar.bz2 diff --git a/SOURCES/pcre2-10.10-Fix-multilib.patch b/SOURCES/pcre2-10.10-Fix-multilib.patch new file mode 100644 index 0000000..89c7d80 --- /dev/null +++ b/SOURCES/pcre2-10.10-Fix-multilib.patch @@ -0,0 +1,39 @@ +From 8b6b10229201e5b148979a24e06c640dbbcfbad9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Fri, 20 Feb 2015 14:34:26 +0100 +Subject: [PATCH] Fix multilib +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Do not set RPATH nor add explicit -L path to compiler. + +Signed-off-by: Petr Písař + +diff --git a/pcre2-config.in b/pcre2-config.in +index 932160e..dbef5e5 100644 +--- a/pcre2-config.in ++++ b/pcre2-config.in +@@ -28,19 +28,7 @@ if test $# -eq 0; then + fi + + libR= +-case `uname -s` in +- *SunOS*) +- libR=" -R@libdir@" +- ;; +- *BSD*) +- libR=" -Wl,-R@libdir@" +- ;; +-esac +- + libS= +-if test @libdir@ != /usr/lib ; then +- libS=-L@libdir@ +-fi + + while test $# -gt 0; do + case "$1" in +-- +2.1.0 + diff --git a/SOURCES/pcre2-10.32-Fix-CVE-2022-1586 b/SOURCES/pcre2-10.32-Fix-CVE-2022-1586 new file mode 100644 index 0000000..8a5b2d9 --- /dev/null +++ b/SOURCES/pcre2-10.32-Fix-CVE-2022-1586 @@ -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" }, diff --git a/SOURCES/pcre2-10.32-Fix-an-xclass-matching-issue-in-JIT.patch b/SOURCES/pcre2-10.32-Fix-an-xclass-matching-issue-in-JIT.patch new file mode 100644 index 0000000..e6cd7c5 --- /dev/null +++ b/SOURCES/pcre2-10.32-Fix-an-xclass-matching-issue-in-JIT.patch @@ -0,0 +1,53 @@ +From dd9e5dc97b897fdec64525560131c1ffb8d8a4d4 Mon Sep 17 00:00:00 2001 +From: zherczeg +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 + diff --git a/SOURCES/pcre2-10.32-Fix-crash-when-X-is-used-without-UTF-in-JIT.patch b/SOURCES/pcre2-10.32-Fix-crash-when-X-is-used-without-UTF-in-JIT.patch new file mode 100644 index 0000000..c4232e8 --- /dev/null +++ b/SOURCES/pcre2-10.32-Fix-crash-when-X-is-used-without-UTF-in-JIT.patch @@ -0,0 +1,45 @@ +From 01d8a82b6333fac75799f475e1d543c2ba6d6744 Mon Sep 17 00:00:00 2001 +From: ph10 +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ř +--- + 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 + diff --git a/SOURCES/pcre2-10.32-Fix-heap-limit-checking-overflow-bug-in-pcre2_dfa_ma.patch b/SOURCES/pcre2-10.32-Fix-heap-limit-checking-overflow-bug-in-pcre2_dfa_ma.patch new file mode 100644 index 0000000..cc3764a --- /dev/null +++ b/SOURCES/pcre2-10.32-Fix-heap-limit-checking-overflow-bug-in-pcre2_dfa_ma.patch @@ -0,0 +1,67 @@ +From 18ee5a9d3779f5e8ee3142326dd65ae75b22bb0b Mon Sep 17 00:00:00 2001 +From: ph10 +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ř +--- + 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 + diff --git a/SOURCES/pcre2-10.32-Fix-subject-buffer-overread-in-JIT.-Found-by-Yunho-K.patch b/SOURCES/pcre2-10.32-Fix-subject-buffer-overread-in-JIT.-Found-by-Yunho-K.patch new file mode 100644 index 0000000..8ff3425 --- /dev/null +++ b/SOURCES/pcre2-10.32-Fix-subject-buffer-overread-in-JIT.-Found-by-Yunho-K.patch @@ -0,0 +1,34 @@ +From f3b9337a2280db816ef6b2cbe3750b2991944c22 Mon Sep 17 00:00:00 2001 +From: zherczeg +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ř +--- + 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 + diff --git a/SOURCES/pcre2-10.32-Fix-zero-repeated-subroutine-call-at-start-of-patter.patch b/SOURCES/pcre2-10.32-Fix-zero-repeated-subroutine-call-at-start-of-patter.patch new file mode 100644 index 0000000..4756faa --- /dev/null +++ b/SOURCES/pcre2-10.32-Fix-zero-repeated-subroutine-call-at-start-of-patter.patch @@ -0,0 +1,112 @@ +From 977cdd668535a54fc8a13ce4a92d9866503b21ea Mon Sep 17 00:00:00 2001 +From: ph10 +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ř +--- + 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 + ++/ (? \w+ )* \. /xi ++ pokus. ++ ++/(?(DEFINE) (? \w+ ) ) (?&word)* \./xi ++ pokus. ++ ++/(?(DEFINE) (? \w+ ) ) ( (?&word)* ) \./xi ++ pokus. ++ ++/(?&word)* (?(DEFINE) (? \w+ ) ) \./xi ++ pokus. ++ ++/(?&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 + ++/ (? \w+ )* \. /xi ++ pokus. ++ 0: pokus. ++ 1: pokus ++ ++/(?(DEFINE) (? \w+ ) ) (?&word)* \./xi ++ pokus. ++ 0: pokus. ++ ++/(?(DEFINE) (? \w+ ) ) ( (?&word)* ) \./xi ++ pokus. ++ 0: pokus. ++ 1: ++ 2: pokus ++ ++/(?&word)* (?(DEFINE) (? \w+ ) ) \./xi ++ pokus. ++ 0: pokus. ++ ++/(?&word)* \. (? \w+ )/xi ++ pokus.hokus ++ 0: pokus.hokus ++ 1: hokus ++ + # End of testinput1 +-- +2.17.2 + diff --git a/SOURCES/pcre2-10.32-Forgot-this-file-in-previous-commit.-Fixes-JIT-non-U.patch b/SOURCES/pcre2-10.32-Forgot-this-file-in-previous-commit.-Fixes-JIT-non-U.patch new file mode 100644 index 0000000..e18e0af --- /dev/null +++ b/SOURCES/pcre2-10.32-Forgot-this-file-in-previous-commit.-Fixes-JIT-non-U.patch @@ -0,0 +1,35 @@ +From 79fb8db65fa27070aac6dde8d6d468306ab6b9a9 Mon Sep 17 00:00:00 2001 +From: ph10 +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ř +--- + 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 + diff --git a/SPECS/pcre2.spec b/SPECS/pcre2.spec new file mode 100644 index 0000000..99f43bc --- /dev/null +++ b/SPECS/pcre2.spec @@ -0,0 +1,561 @@ +# Add readline edditing in pcre2test tool +%bcond_without pcre2_enables_readline + +# Disable SELinux-frindly JIT allocator because it seems not to be fork-safe, +# https://bugs.exim.org/show_bug.cgi?id=1749#c45 +%bcond_with pcre2_enables_sealloc + +# This is stable release: +#%%global rcversion RC1 +Name: pcre2 +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 +# pcre2test (linked to GNU readline): BSD (linked to GPLv3+) +# COPYING: see LICENCE file +# LICENSE: BSD text with exceptions and +# Public Domain declaration +# for testdata +#Bundled +# src/sljit: BSD +#Not distributed in any binary package +# aclocal.m4: FSFULLR and GPLv2+ with exception +# ar-lib: GPLv2+ with exception +# cmake/COPYING-CMAKE-SCRIPTS: BSD +# compile: GPLv2+ with exception +# config.guess: GPLv3+ with exception +# config.sub: GPLv3+ with exception +# configure: FSFUL and GPLv2+ with exception +# depcomp: GPLv2+ with exception +# INSTALL: FSFAP +# install-sh: MIT +# ltmain.sh: GPLv2+ with exception and (MIT or GPLv3+) +# m4/ax_pthread.m4: GPLv3+ with exception +# m4/libtool.m4: FSFUL and FSFULLR and +# GPLv2+ with exception +# m4/ltoptions.m4: FSFULLR +# m4/ltsugar.m4: FSFULLR +# m4/ltversion.m4: FSFULLR +# m4/lt~obsolete.m4: FSFULLR +# m4/pcre2_visibility.m4: FSFULLR +# Makefile.in: FSFULLR +# missing: GPLv2+ with exception +# test-driver: GPLv2+ with exception +# testdata: Public Domain +License: BSD +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 +# 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: libtool +BuildRequires: make +%if %{with pcre2_enables_readline} +BuildRequires: readline-devel +%endif +Provides: bundled(sljit) + +%description +PCRE2 is a re-working of the original PCRE (Perl-compatible regular +expression) library to provide an entirely new API. + +PCRE2 is written in C, and it has its own API. There are three sets of +functions, one for the 8-bit library, which processes strings of bytes, one +for the 16-bit library, which processes strings of 16-bit values, and one for +the 32-bit library, which processes strings of 32-bit values. There are no C++ +wrappers. This package provides support for strings in 8-bit and UTF-8 +encodings. Install %{name}-utf16 or %{name}-utf32 packages for the other ones. + +The distribution does contain a set of C wrapper functions for the 8-bit +library that are based on the POSIX regular expression API (see the pcre2posix +man page). These can be found in a library called libpcre2posix. Note that +this just provides a POSIX calling interface to PCRE2; the regular expressions +themselves still follow Perl syntax and semantics. The POSIX API is +restricted, and does not give full access to all of PCRE2's facilities. + +%package utf16 +Summary: UTF-16 variant of PCRE2 +Provides: bundled(sljit) +Conflicts: %{name}%{?_isa} < 10.21-4 + +%description utf16 +This is PCRE2 library working on UTF-16 strings. + +%package utf32 +Summary: UTF-32 variant of PCRE2 +Provides: bundled(sljit) +Conflicts: %{name}%{?_isa} < 10.21-4 + +%description utf32 +This is PCRE2 library working on UTF-32 strings. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-utf16%{?_isa} = %{version}-%{release} +Requires: %{name}-utf32%{?_isa} = %{version}-%{release} + +%description devel +Development files (headers, libraries for dynamic linking, documentation) +for %{name}. The header file for the POSIX-style functions is called +pcre2posix.h. + +%package static +Summary: Static library for %{name} +Requires: %{name}-devel%{_isa} = %{version}-%{release} +Provides: bundled(sljit) + +%description static +Library for static linking for %{name}. + +%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} + +%description tools +Utilities demonstrating PCRE2 capabilities like pcre2grep or pcre2test. + +%prep +%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 + +%build +# There is a strict-aliasing problem on PPC64, bug #881232 +%ifarch ppc64 +%global optflags %{optflags} -fno-strict-aliasing +%endif +%configure \ +%ifarch s390 s390x sparc64 sparcv9 riscv64 + --disable-jit \ + --disable-pcre2grep-jit \ +%else + --enable-jit \ + --enable-pcre2grep-jit \ +%endif + --disable-bsr-anycrlf \ + --disable-coverage \ + --disable-ebcdic \ + --disable-fuzz-support \ +%if %{with pcre2_enables_sealloc} + --enable-jit-sealloc \ +%else + --disable-jit-sealloc \ +%endif + --disable-never-backslash-C \ + --enable-newline-is-lf \ + --enable-pcre2-8 \ + --enable-pcre2-16 \ + --enable-pcre2-32 \ + --enable-pcre2grep-callout \ + --disable-pcre2grep-libbz2 \ + --disable-pcre2grep-libz \ + --disable-pcre2test-libedit \ +%if %{with pcre2_enables_readline} + --enable-pcre2test-libreadline \ +%else + --disable-pcre2test-libreadline \ +%endif + --disable-rebuild-chartables \ + --enable-shared \ + --disable-silent-rules \ + --enable-static \ + --enable-unicode \ + --disable-valgrind +make %{?_smp_mflags} + +%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 +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.* +%{_libdir}/libpcre2-posix.so.* +%{!?_licensedir:%global license %%doc} +%license COPYING LICENCE +%doc AUTHORS ChangeLog NEWS + +%files utf16 +%{_libdir}/libpcre2-16.so.* +%license COPYING LICENCE +%doc AUTHORS ChangeLog NEWS + +%files utf32 +%{_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/* +%{_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 tools +%{_bindir}/pcre2grep +%{_bindir}/pcre2test +%{_mandir}/man1/pcre2grep.* +%{_mandir}/man1/pcre2test.* + +%changelog +* Fri May 13 2022 Lukas Javorsky - 10.32-3 +- Resolves: CVE-2022-1586 + +* Mon May 13 2019 Petr Pisar - 10.32-2 +- Fix CVE-2019-20454 (a crash when \X is used without UTF mode in a JIT) + (bug #1734468) + +* Fri Dec 07 2018 Petr Pisar - 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 (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) + +* Mon Sep 24 2018 Petr Pisar - 10.31-11 +- Fix caseless matching an extended class in JIT mode (bug #1617960) + +* Mon Sep 03 2018 Petr Pisar - 10.31-10 +- Fix anchoring in conditionals with only one branch (bug #1617960) + +* Thu Aug 16 2018 Petr Pisar - 10.31-9 +- Recognize all Unicode space characters with /x option in a pattern + (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 - 10.31-8 +- Fix backtracking atomic groups when they are not separated by something with + a backtracking point + +* Mon Jul 09 2018 Petr Pisar - 10.31-7 +- Fix checking that a lookbehind assertion has a fixed length if the + lookbehind assertion is used inside a lookahead assertion +- Fix parsing VERSION conditions + +* Mon Jul 02 2018 Petr Pisar - 10.31-6 +- Fix global search/replace in pcre2test and pcre2_substitute() when the pattern + matches an empty string, but never at the starting offset + +* Mon Jun 25 2018 Petr Pisar - 10.31-5 +- Fix bug when \K is used in a lookbehind in a substitute pattern + +* Fri Mar 16 2018 Petr Pisar - 10.31-4 +- Fix setting error offset zero for early errors in pcre2_pattern_convert() + +* Mon Feb 26 2018 Petr Pisar - 10.31-3 +- Add support to pcre2grep for binary zeros in -f files (upstream bug #2222) +- Fix compiler warnings in pcre2grep + +* Tue Feb 20 2018 Petr Pisar - 10.31-2 +- Fix returning unset groups in POSIX interface if REG_STARTEND has a non-zero + starting offset (upstream bug #2244) +- Fix pcre2test -C to correctly show what \R matches +- Fix matching repeated character classes against an 8-bit string containting + multi-code-unit characters + +* Mon Feb 12 2018 Petr Pisar - 10.31-1 +- 10.31 bump + +* Thu Feb 08 2018 Fedora Release Engineering - 10.31-0.3.RC1.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Feb 02 2018 Igor Gnatenko - 10.31-0.3.RC1.1 +- Switch to %%ldconfig_scriptlets + +* Thu Feb 01 2018 Petr Pisar - 10.31-0.3.RC1 +- Fix auto-possessification at the end of a capturing group that is called + recursively (upstream bug #2232) + +* Tue Jan 30 2018 Petr Pisar - 10.31-0.2.RC1 +- Enlarge ovector array match data structure to be large enough in all cases + (oss-fuzz #5415) + +* Mon Jan 15 2018 Petr Pisar - 10.31-0.1.RC1 +- 10.31-RC1 bump + +* Fri Jan 12 2018 Petr Pisar - 10.30-5 +- Fix handling \K in an assertion in pcre2grep tool and documentation + (upstream bug #2211) +- Fix matching at a first code unit of a new line sequence if PCRE2_FIRSTLINE + is enabled + +* Fri Dec 22 2017 Petr Pisar - 10.30-4 +- Fix pcre2_jit_match() to properly check the pattern was JIT-compiled +- Allow pcre2grep match counter to handle values larger than 2147483647, + (upstream bug #2208) +- Fix incorrect first matching character when a backreference with zero minimum + repeat starts a pattern (upstream bug #2209) + +* Mon Nov 13 2017 Petr Pisar - 10.30-3 +- Fix multi-line matching in pcre2grep tool (upstream bug #2187) + +* Thu Nov 02 2017 Petr Pisar - 10.30-2 +- Accept files names longer than 128 bytes in recursive mode of pcre2grep + (upstream bug #2177) + +* Tue Aug 15 2017 Petr Pisar - 10.30-1 +- 10.30 bump + +* Wed Aug 02 2017 Petr Pisar - 10.30-0.6.RC1 +- Disable SELinux-friendly JIT allocator because it crashes after a fork + (upstream bug #1749) + +* Mon Jul 31 2017 Petr Pisar - 10.30-0.5.RC1 +- Fix handling a hyphen at the end of a character class (upstream bug #2153) + +* Sat Jul 29 2017 Florian Weimer - 10.30-0.4.RC1 +- Rebuild with binutils fix for ppc64le (#1475636) + +* Thu Jul 27 2017 Petr Pisar - 10.30-0.3.RC1 +- Fix applying local x modifier while global xx was in effect + +* Thu Jul 27 2017 Fedora Release Engineering - 10.30-0.2.RC1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jul 24 2017 Petr Pisar - 10.30-0.2.RC1 +- Fix a compiler warning in JIT code for ppc32 + +* Thu Jul 20 2017 Petr Pisar - 10.30-0.1.RC1 +- 10.30-RC1 bump +- Heap-based matching implementation replaced stack-based one +- SELinux-friendly JIT enabled + +* Fri Jun 16 2017 Petr Pisar - 10.23-8 +- Fix DFA matching a lookbehind assertion that has a zero-length branch + (PCRE2 oss-fuzz issue 1859) +- Fix returned offsets from regexec() when REG_STARTEND is used with starting offset + greater than zero (upstream bug #2128) + +* Tue May 09 2017 Petr Pisar - 10.23-7 +- Fix a pcre2test crash on multiple push statements (upstream bug #2109) + +* Tue Apr 18 2017 Petr Pisar - 10.23-6 +- Fix CVE-2017-7186 in JIT mode (a crash when finding a Unicode property for + a character with a code point greater than 0x10ffff in UTF-32 library while + UTF mode is disabled) (bug #1434504) +- Fix an incorrect cast in UTF validation (upstream bug #2090) + +* Mon Mar 27 2017 Petr Pisar - 10.23-5 +- Fix DFA match for a possessively repeated character class (upstream bug #2086) +- Use a memory allocator from the pattern if no context is supplied to + pcre2_match() + +* Wed Mar 22 2017 Petr Pisar - 10.23-4 +- Close serialization file in pcre2test after any error (upstream bug #2074) +- Fix a memory leak in pcre2_serialize_decode() when the input is invalid + (upstream bug #2075) +- Fix a potential NULL dereference in pcre2_callout_enumerate() if called with + a NULL pattern pointer when Unicode support is available (upstream bug #2076) +- Fix CVE-2017-8786 (32-bit error buffer size bug in pcre2test) (bug #1500717) + +* Mon Mar 20 2017 Petr Pisar - 10.23-3 +- Fix an internal error for a forward reference in a lookbehind with + PCRE2_ANCHORED (oss-fuzz bug #865) +- Fix a pcre2test bug for global match with zero terminated subject + (upstream bug #2063) + +* Mon Feb 27 2017 Petr Pisar - 10.23-2 +- Handle memmory allocation failures in pcre2test tool +- Fix CVE-2017-7186 (a crash when finding a Unicode property for a character + with a code point greater than 0x10ffff in UTF-32 library while UTF mode is + disabled) (upstream bug #2052) + +* Tue Feb 14 2017 Petr Pisar - 10.23-1 +- 10.23 bump + +* Sat Feb 11 2017 Fedora Release Engineering - 10.23-0.1.RC1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jan 17 2017 Petr Pisar - 10.23-0.1.RC1 +- 10.23-RC1 bump + +* Thu Jan 12 2017 Igor Gnatenko - 10.22-10.1 +- Rebuild for readline 7.x + +* Thu Jan 12 2017 Petr Pisar - 10.22-10 +- Fix an out-of-bound read in pcre2test tool within POSIX mode + (upstream bug #2008) + +* Tue Jan 03 2017 Petr Pisar - 10.22-9 +- Fix compiling a class with UCP and without UTF + +* Fri Dec 16 2016 Petr Pisar - 10.22-8 +- Fix a crash when doing an extended substitution for \p, \P, or \X + (upstream bug #1977) +- Fix a crash in substitution if starting offest was specified beyond the + subject end (upstream bug #1992) + +* Fri Dec 09 2016 Petr Pisar - 10.22-7 +- Fix pcre2-config --libs-posix output (upstream bug #1924) +- Fix a memory leak and a typo in a documentation (upstream bug #1973) +- Fix a buffer overflow in partial match test for CRLF in an empty buffer + (upstream bug #1975) +- Fix a crash in pcre2test when displaying a wide character with a set locate + (upstream bug #1976) + +* Tue Nov 08 2016 Petr Pisar - 10.22-6 +- Fix faulty auto-anchoring patterns when .* is inside an assertion + +* Mon Oct 24 2016 Petr Pisar - 10.22-5 +- Document assert capture limitation (upstream bug #1887) +- Ignore offset modifier in pcre2test in POSIX mode (upstream bug #1898) + +* Wed Oct 19 2016 Richard W.M. Jones <@redhat.com> - 10.22-4 +- Disable the JIT on riscv64. + +* Wed Oct 19 2016 Petr Pisar - 10.22-3 +- Fix displaying a callout position in pcretest output with an escape sequence + greater than \x{ff} +- Fix pcrepattern(3) documentation +- Fix miscopmilation of conditionals when a group name start with "R" + (upstream bug #1873) +- Fix internal option documentation in pcre2pattern(3) (upstream bug #1875) +- Fix optimization bugs for patterns starting with lookaheads + (upstream bug #1882) + +* Mon Aug 29 2016 Petr Pisar - 10.22-2 +- Fix matching characters above 255 when a negative character type was used + without enabled UCP in a positive class (upstream bug #1866) + +* Fri Jul 29 2016 Petr Pisar - 10.22-1 +- 10.22 bump + +* Thu Jun 30 2016 Petr Pisar - 10.22-0.1.RC1 +- 10.22-RC1 bump +- libpcre2-posix library changed ABI +- Fix register overwite in JIT when SSE2 acceleration is enabled +- Correct pcre2unicode(3) documentation + +* Mon Jun 20 2016 Petr Pisar - 10.21-6 +- Fix repeated pcregrep output if -o with -M options were used and the match + extended over a line boundary (upstream bug #1848) + +* Fri Jun 03 2016 Petr Pisar - 10.21-5 +- Fix a race in JIT locking condition +- Fix an ovector check in JIT test program +- Enable JIT in the pcre2grep tool + +* Mon Mar 07 2016 Petr Pisar - 10.21-4 +- Ship README in devel as it covers API and build, not general info +- Move UTF-16 and UTF-32 libraries into pcre-ut16 and pcre-32 subpackages + +* Mon Feb 29 2016 Petr Pisar - 10.21-3 +- Fix a typo in pcre2_study() + +* Thu Feb 11 2016 Petr Pisar - 10.21-2 +- Report unmatched closing parantheses properly +- Fix pcre2test for expressions with a callout inside a look-behind assertion + (upstream bug #1783) +- Fix CVE-2016-3191 (workspace overflow for (*ACCEPT) with deeply nested + parentheses) (upstream bug #1791) + +* Thu Feb 04 2016 Fedora Release Engineering - 10.21-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jan 12 2016 Petr Pisar - 10.21-1 +- 10.21 bump + +* Wed Jan 06 2016 Petr Pisar - 10.21-0.2.RC1 +- Adapt a test to French locale on RHEL + +* Tue Jan 05 2016 Petr Pisar - 10.21-0.1.RC1 +- 10.21-RC1 bump + +* Mon Oct 26 2015 Petr Pisar - 10.20-3 +- Fix compiling patterns with PCRE2_NO_AUTO_CAPTURE (upstream bug #1704) + +* Mon Oct 12 2015 Petr Pisar - 10.20-2 +- Fix compiling classes with a negative escape and a property escape + (upstream bug #1697) +- Fix integer overflow for patterns whose minimum matching length is large + (upstream bug #1699) + +* Fri Jul 03 2015 Petr Pisar - 10.20-1 +- 10.20 bump + +* Fri Jun 19 2015 Petr Pisar - 10.20-0.1.RC1 +- 10.20-RC1 bump +- Replace dependency on glibc-headers with gcc (bug #1230479) +- Preserve soname + +* Thu Jun 18 2015 Fedora Release Engineering - 10.10-3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri May 29 2015 Marcin Juszkiewicz - 10.10-3 +- fixed Release field + +* Fri May 29 2015 Marcin Juszkiewicz - 10.10-2.1 +- Backport fix for AArch64 + +* Tue May 05 2015 Petr Pisar - 10.10-2 +- Package pcre2demo.c as a documentation for pcre2-devel + +* Fri Mar 13 2015 Petr Pisar - 10.10-1 +- PCRE2 library packaged +