diff --git a/.gitignore b/.gitignore index 6ede8f8..bb3081e 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ /pcre2-10.32-RC1.tar.bz2 /pcre2-10.32.tar.bz2 /pcre2-10.33-RC1.tar.bz2 +/pcre2-10.33.tar.bz2 diff --git a/pcre2-10.33-RC1-Disable-SSE2-JIT-optimizations-in-x86-CPUs-when-SSE2.patch b/pcre2-10.33-RC1-Disable-SSE2-JIT-optimizations-in-x86-CPUs-when-SSE2.patch deleted file mode 100644 index 0fa4b75..0000000 --- a/pcre2-10.33-RC1-Disable-SSE2-JIT-optimizations-in-x86-CPUs-when-SSE2.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 706a1c624c591e404a7739b49fd33830427ff2af Mon Sep 17 00:00:00 2001 -From: zherczeg -Date: Mon, 25 Mar 2019 14:10:24 +0000 -Subject: [PATCH] Disable SSE2 JIT optimizations in x86 CPUs when SSE2 is not - available. -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@1082 6239d852-aaf2-0410-a92c-79f79f948069 -Signed-off-by: Petr Písař ---- - src/pcre2_jit_compile.c | 2 +- - -diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c -index 6519b4b..256356c 100644 ---- a/src/pcre2_jit_compile.c -+++ b/src/pcre2_jit_compile.c -@@ -6268,7 +6268,7 @@ for (i = 0; i < max; i++) - } - - #if (defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86) && !(defined SUPPORT_VALGRIND) && !(defined _WIN64) --if (check_fast_forward_char_pair_sse2(common, chars, max)) -+if (sljit_has_cpu_feature(SLJIT_HAS_SSE2) && check_fast_forward_char_pair_sse2(common, chars, max)) - return TRUE; - #endif - --- -2.20.1 - diff --git a/pcre2-10.33-RC1-Fix-crash-in-pcre2_substitute-with-NULL-match-contex.patch b/pcre2-10.33-RC1-Fix-crash-in-pcre2_substitute-with-NULL-match-contex.patch deleted file mode 100644 index c6e6bbd..0000000 --- a/pcre2-10.33-RC1-Fix-crash-in-pcre2_substitute-with-NULL-match-contex.patch +++ /dev/null @@ -1,322 +0,0 @@ -From 3bf3763f680dc980cda4135c91d85d8fe9ab2bb6 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Mon, 11 Mar 2019 17:29:08 +0000 -Subject: [PATCH] Fix crash in pcre2_substitute() with NULL match context. -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@1081 6239d852-aaf2-0410-a92c-79f79f948069 -Signed-off-by: Petr Písař ---- - ChangeLog | 8 +++++--- - doc/html/pcre2test.html | 18 ++++++++++-------- - doc/pcre2test.1 | 20 +++++++++++--------- - doc/pcre2test.txt | 18 ++++++++++-------- - src/pcre2_substitute.c | 2 +- - src/pcre2test.c | 24 +++++++++++++----------- - testdata/testinput2 | 8 ++++++++ - testdata/testoutput2 | 12 ++++++++++++ - 8 files changed, 70 insertions(+), 40 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index b9f1b96..331cb2f 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -2,8 +2,8 @@ Change Log for PCRE2 - -------------------- - - --Version 10.33-RC1 03-March-2019 --------------------------------- -+Version 10.33 11-March-2019 -+--------------------------- - - 1. Added "allvector" to pcre2test to make it easy to check the part of the - ovector that shouldn't be changed, in particular after substitute and failed or -@@ -12,7 +12,9 @@ partial matches. - 2. Fix subject buffer overread in JIT when UTF is disabled and \X or \R has - a greater than 1 fixed quantifier. This issue was found by Yunho Kim. - --3. Added support for callouts from pcre2_substitute(). -+3. Added support for callouts from pcre2_substitute(). After 10.33-RC1, but -+prior to release, fixed a bug that caused a crash if pcre2_substitute() was -+called with a NULL match context. - - 4. The POSIX functions are now all called pcre2_regcomp() etc., with wrapper - functions that use the standard POSIX names. However, in pcre2posix.h the POSIX -diff --git a/doc/html/pcre2test.html b/doc/html/pcre2test.html -index 8f35acc..083d5cc 100644 ---- a/doc/html/pcre2test.html -+++ b/doc/html/pcre2test.html -@@ -1450,8 +1450,10 @@ Testing substitute callouts -
-

- If the substitute_callout modifier is set, a substitution callout --function is set up. When it is called (after each substitution), details of the --the input and output strings are output. For example: -+function is set up. The null_context modifier must not be set, because -+the address of the callout function is passed in a match context. When the -+callout function is called (after each substitution), details of the the input -+and output strings are output. For example: -

-   /abc/g,replace=<$0>,substitute_callout
-       abcdefabcpqr
-@@ -1626,11 +1628,11 @@ Passing a NULL context
- 
-

- Normally, pcre2test passes a context block to pcre2_match(), --pcre2_dfa_match() or pcre2_jit_match(). If the null_context --modifier is set, however, NULL is passed. This is for testing that the matching --functions behave correctly in this case (they use default values). This --modifier cannot be used with the find_limits modifier or when testing the --substitution function. -+pcre2_dfa_match(), pcre2_jit_match() or pcre2_substitute(). -+If the null_context modifier is set, however, NULL is passed. This is for -+testing that the matching and substitution functions behave correctly in this -+case (they use default values). This modifier cannot be used with the -+find_limits or substitute_callout modifiers. -

-
THE ALTERNATIVE MATCHING FUNCTION
-

-@@ -2076,7 +2078,7 @@ Cambridge, England. -

-
REVISION
-

--Last updated: 11 February 2019 -+Last updated: 11 March 2019 -
- Copyright © 1997-2019 University of Cambridge. -
-diff --git a/doc/pcre2test.1 b/doc/pcre2test.1 -index 954e043..568e705 100644 ---- a/doc/pcre2test.1 -+++ b/doc/pcre2test.1 -@@ -1,4 +1,4 @@ --.TH PCRE2TEST 1 "11 February 2019" "PCRE 10.33" -+.TH PCRE2TEST 1 "11 March 2019" "PCRE 10.33" - .SH NAME - pcre2test - a program for testing Perl-compatible regular expressions. - .SH SYNOPSIS -@@ -1417,8 +1417,10 @@ matching provokes an error return ("bad option value") from - .rs - .sp - If the \fBsubstitute_callout\fP modifier is set, a substitution callout --function is set up. When it is called (after each substitution), details of the --the input and output strings are output. For example: -+function is set up. The \fBnull_context\fP modifier must not be set, because -+the address of the callout function is passed in a match context. When the -+callout function is called (after each substitution), details of the the input -+and output strings are output. For example: - .sp - /abc/g,replace=<$0>,substitute_callout - abcdefabcpqr -@@ -1587,11 +1589,11 @@ passing the replacement string as zero-terminated. - .rs - .sp - Normally, \fBpcre2test\fP passes a context block to \fBpcre2_match()\fP, --\fBpcre2_dfa_match()\fP or \fBpcre2_jit_match()\fP. If the \fBnull_context\fP --modifier is set, however, NULL is passed. This is for testing that the matching --functions behave correctly in this case (they use default values). This --modifier cannot be used with the \fBfind_limits\fP modifier or when testing the --substitution function. -+\fBpcre2_dfa_match()\fP, \fBpcre2_jit_match()\fP or \fBpcre2_substitute()\fP. -+If the \fBnull_context\fP modifier is set, however, NULL is passed. This is for -+testing that the matching and substitution functions behave correctly in this -+case (they use default values). This modifier cannot be used with the -+\fBfind_limits\fP or \fBsubstitute_callout\fP modifiers. - . - . - .SH "THE ALTERNATIVE MATCHING FUNCTION" -@@ -2057,6 +2059,6 @@ Cambridge, England. - .rs - .sp - .nf --Last updated: 11 February 2019 -+Last updated: 11 March 2019 - Copyright (c) 1997-2019 University of Cambridge. - .fi -diff --git a/doc/pcre2test.txt b/doc/pcre2test.txt -index ca3b7e3..cbe3528 100644 ---- a/doc/pcre2test.txt -+++ b/doc/pcre2test.txt -@@ -1303,8 +1303,10 @@ SUBJECT MODIFIERS - Testing substitute callouts - - If the substitute_callout modifier is set, a substitution callout func- -- tion is set up. When it is called (after each substitution), details of -- the the input and output strings are output. For example: -+ tion is set up. The null_context modifier must not be set, because the -+ address of the callout function is passed in a match context. When the -+ callout function is called (after each substitution), details of the -+ the input and output strings are output. For example: - - /abc/g,replace=<$0>,substitute_callout - abcdefabcpqr -@@ -1457,11 +1459,11 @@ SUBJECT MODIFIERS - Passing a NULL context - - Normally, pcre2test passes a context block to pcre2_match(), -- pcre2_dfa_match() or pcre2_jit_match(). If the null_context modifier is -- set, however, NULL is passed. This is for testing that the matching -- functions behave correctly in this case (they use default values). This -- modifier cannot be used with the find_limits modifier or when testing -- the substitution function. -+ pcre2_dfa_match(), pcre2_jit_match() or pcre2_substitute(). If the -+ null_context modifier is set, however, NULL is passed. This is for -+ testing that the matching and substitution functions behave correctly -+ in this case (they use default values). This modifier cannot be used -+ with the find_limits or substitute_callout modifiers. - - - THE ALTERNATIVE MATCHING FUNCTION -@@ -1888,5 +1890,5 @@ AUTHOR - - REVISION - -- Last updated: 11 February 2019 -+ Last updated: 11 March 2019 - Copyright (c) 1997-2019 University of Cambridge. -diff --git a/src/pcre2_substitute.c b/src/pcre2_substitute.c -index 0b46629..0b63ef4 100644 ---- a/src/pcre2_substitute.c -+++ b/src/pcre2_substitute.c -@@ -839,7 +839,7 @@ do - remembered. Do the callout if there is one and we have done an actual - replacement. */ - -- if (!overflowed && mcontext->substitute_callout != NULL) -+ if (!overflowed && mcontext != NULL && mcontext->substitute_callout != NULL) - { - scb.subscount = subs; - scb.output_offsets[1] = buff_offset; -diff --git a/src/pcre2test.c b/src/pcre2test.c -index e493099..46722ef 100644 ---- a/src/pcre2test.c -+++ b/src/pcre2test.c -@@ -1388,13 +1388,13 @@ are supported. */ - - #define PCRE2_SUBSTITUTE(a,b,c,d,e,f,g,h,i,j,k,l) \ - if (test_mode == PCRE8_MODE) \ -- a = pcre2_substitute_8(G(b,8),(PCRE2_SPTR8)c,d,e,f,G(g,8),G(h,8), \ -+ a = pcre2_substitute_8(G(b,8),(PCRE2_SPTR8)c,d,e,f,G(g,8),h, \ - (PCRE2_SPTR8)i,j,(PCRE2_UCHAR8 *)k,l); \ - else if (test_mode == PCRE16_MODE) \ -- a = pcre2_substitute_16(G(b,16),(PCRE2_SPTR16)c,d,e,f,G(g,16),G(h,16), \ -+ a = pcre2_substitute_16(G(b,16),(PCRE2_SPTR16)c,d,e,f,G(g,16),h, \ - (PCRE2_SPTR16)i,j,(PCRE2_UCHAR16 *)k,l); \ - else \ -- a = pcre2_substitute_32(G(b,32),(PCRE2_SPTR32)c,d,e,f,G(g,32),G(h,32), \ -+ a = pcre2_substitute_32(G(b,32),(PCRE2_SPTR32)c,d,e,f,G(g,32),h, \ - (PCRE2_SPTR32)i,j,(PCRE2_UCHAR32 *)k,l) - - #define PCRE2_SUBSTRING_COPY_BYNAME(a,b,c,d,e) \ -@@ -1866,11 +1866,11 @@ the three different cases. */ - #define PCRE2_SUBSTITUTE(a,b,c,d,e,f,g,h,i,j,k,l) \ - if (test_mode == G(G(PCRE,BITONE),_MODE)) \ - a = G(pcre2_substitute_,BITONE)(G(b,BITONE),(G(PCRE2_SPTR,BITONE))c,d,e,f, \ -- G(g,BITONE),G(h,BITONE),(G(PCRE2_SPTR,BITONE))i,j, \ -+ G(g,BITONE),h,(G(PCRE2_SPTR,BITONE))i,j, \ - (G(PCRE2_UCHAR,BITONE) *)k,l); \ - else \ - a = G(pcre2_substitute_,BITTWO)(G(b,BITTWO),(G(PCRE2_SPTR,BITTWO))c,d,e,f, \ -- G(g,BITTWO),G(h,BITTWO),(G(PCRE2_SPTR,BITTWO))i,j, \ -+ G(g,BITTWO),h,(G(PCRE2_SPTR,BITTWO))i,j, \ - (G(PCRE2_UCHAR,BITTWO) *)k,l) - - #define PCRE2_SUBSTRING_COPY_BYNAME(a,b,c,d,e) \ -@@ -2068,7 +2068,7 @@ the three different cases. */ - pcre2_set_substitute_callout_8(G(a,8), \ - (int (*)(pcre2_substitute_callout_block_8 *, void *))b,c) - #define PCRE2_SUBSTITUTE(a,b,c,d,e,f,g,h,i,j,k,l) \ -- a = pcre2_substitute_8(G(b,8),(PCRE2_SPTR8)c,d,e,f,G(g,8),G(h,8), \ -+ a = pcre2_substitute_8(G(b,8),(PCRE2_SPTR8)c,d,e,f,G(g,8),h, \ - (PCRE2_SPTR8)i,j,(PCRE2_UCHAR8 *)k,l) - #define PCRE2_SUBSTRING_COPY_BYNAME(a,b,c,d,e) \ - a = pcre2_substring_copy_byname_8(G(b,8),G(c,8),(PCRE2_UCHAR8 *)d,e) -@@ -2175,7 +2175,7 @@ the three different cases. */ - pcre2_set_substitute_callout_16(G(a,16), \ - (int (*)(pcre2_substitute_callout_block_16 *, void *))b,c) - #define PCRE2_SUBSTITUTE(a,b,c,d,e,f,g,h,i,j,k,l) \ -- a = pcre2_substitute_16(G(b,16),(PCRE2_SPTR16)c,d,e,f,G(g,16),G(h,16), \ -+ a = pcre2_substitute_16(G(b,16),(PCRE2_SPTR16)c,d,e,f,G(g,16),h, \ - (PCRE2_SPTR16)i,j,(PCRE2_UCHAR16 *)k,l) - #define PCRE2_SUBSTRING_COPY_BYNAME(a,b,c,d,e) \ - a = pcre2_substring_copy_byname_16(G(b,16),G(c,16),(PCRE2_UCHAR16 *)d,e) -@@ -2282,7 +2282,7 @@ the three different cases. */ - pcre2_set_substitute_callout_32(G(a,32), \ - (int (*)(pcre2_substitute_callout_block_32 *, void *))b,c) - #define PCRE2_SUBSTITUTE(a,b,c,d,e,f,g,h,i,j,k,l) \ -- a = pcre2_substitute_32(G(b,32),(PCRE2_SPTR32)c,d,e,f,G(g,32),G(h,32), \ -+ a = pcre2_substitute_32(G(b,32),(PCRE2_SPTR32)c,d,e,f,G(g,32),h, \ - (PCRE2_SPTR32)i,j,(PCRE2_UCHAR32 *)k,l) - #define PCRE2_SUBSTRING_COPY_BYNAME(a,b,c,d,e) \ - a = pcre2_substring_copy_byname_32(G(b,32),G(c,32),(PCRE2_UCHAR32 *)d,e) -@@ -6939,11 +6939,13 @@ for (k = 0; k < sizeof(exclusive_dat_controls)/sizeof(uint32_t); k++) - - if (pat_patctl.replacement[0] != 0) - { -- if ((dat_datctl.control & CTL_NULLCONTEXT) != 0) -+ if ((dat_datctl.control2 & CTL2_SUBSTITUTE_CALLOUT) != 0 && -+ (dat_datctl.control & CTL_NULLCONTEXT) != 0) - { -- fprintf(outfile, "** Replacement text is not supported with null_context.\n"); -+ fprintf(outfile, "** Replacement callouts are not supported with null_context.\n"); - return PR_OK; - } -+ - if ((dat_datctl.control & CTL_ALLCAPTURES) != 0) - fprintf(outfile, "** Ignored with replacement text: allcaptures\n"); - } -@@ -7335,7 +7337,7 @@ if (dat_datctl.replacement[0] != 0) - } - - PCRE2_SUBSTITUTE(rc, compiled_code, pp, arg_ulen, dat_datctl.offset, -- dat_datctl.options|xoptions, match_data, dat_context, -+ dat_datctl.options|xoptions, match_data, use_dat_context, - rbuffer, rlen, nbuffer, &nsize); - - if (rc < 0) -diff --git a/testdata/testinput2 b/testdata/testinput2 -index 433f9f8..9e59b62 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -5579,4 +5579,12 @@ a)"xI - - /(*ACCEPT:XX)^abc/I - -+/abc/replace=xyz -+ abc\=null_context -+ -+/abc/replace=xyz,substitute_callout -+ abc -+\= Expect error message -+ abc\=null_context -+ - # End of testinput2 -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index d0e289d..2f91c38 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -16922,6 +16922,18 @@ Subject length lower bound = 3 - Capture group count = 0 - Subject length lower bound = 0 - -+/abc/replace=xyz -+ abc\=null_context -+ 1: xyz -+ -+/abc/replace=xyz,substitute_callout -+ abc -+ 1(1) Old 0 3 "abc" New 0 3 "xyz" -+ 1: xyz -+\= Expect error message -+ abc\=null_context -+** Replacement callouts are not supported with null_context. -+ - # End of testinput2 - Error -70: PCRE2_ERROR_BADDATA (unknown error number) - Error -62: bad serialized data --- -2.20.1 - diff --git a/pcre2.spec b/pcre2.spec index 948da6b..b615d1e 100644 --- a/pcre2.spec +++ b/pcre2.spec @@ -6,10 +6,10 @@ %bcond_with pcre2_enables_sealloc # This is stable release: -%global rcversion RC1 +#%%global rcversion RC1 Name: pcre2 Version: 10.33 -Release: %{?rcversion:0.}4%{?rcversion:.%rcversion}%{?dist} +Release: %{?rcversion:0.}1%{?rcversion:.%rcversion}%{?dist} %global myversion %{version}%{?rcversion:-%rcversion} Summary: Perl-compatible regular expression library # the library: BSD with exceptions @@ -49,12 +49,6 @@ 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 crash in pcre2_substitute() function if mcontext argument is NULL, -# bug #1686434, upstream bug #2382, in upstream after 10.33-RC1 -Patch1: pcre2-10.33-RC1-Fix-crash-in-pcre2_substitute-with-NULL-match-contex.patch -# Do not use SSE2 instructions on x86 CPUs without SSE2 support, -# upstream bug #2385, in upstream after 10.33-RC1 -Patch2: pcre2-10.33-RC1-Disable-SSE2-JIT-optimizations-in-x86-CPUs-when-SSE2.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: coreutils @@ -131,8 +125,6 @@ Utilities demonstrating PCRE2 capabilities like pcre2grep or pcre2test. %prep %setup -q -n %{name}-%{myversion} %patch0 -p1 -%patch1 -p1 -%patch2 -p1 # Because of multilib patch libtoolize --copy --force autoreconf -vif @@ -231,6 +223,9 @@ make %{?_smp_mflags} check VERBOSE=yes %{_mandir}/man1/pcre2test.* %changelog +* Tue Apr 16 2019 Petr Pisar - 10.33-1 +- 10.33 bump + * Tue Mar 26 2019 Petr Pisar - 10.33-0.4.RC1 - Do not use SSE2 instructions on x86 CPUs without SSE2 support (upstream bug #2385) diff --git a/sources b/sources index 65809e0..e65e360 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pcre2-10.33-RC1.tar.bz2) = 3011c2aca946e3668c02ae16b207dccbc794cf4e1fe07d9932e43ec7af2d58bb92cd65315948e69ea8f6fa96a64b91a71c5a7696b9e46486468a7044e887d009 +SHA512 (pcre2-10.33.tar.bz2) = c6aa52cdbb0c906b02e9a9f255697a1b9b99d9c7dccdaa484ffdb04fe3582d232ba3cb3c421d6df589a387b415dedb0817f58ec5391488b25b4e7bd9da6bab8f