Projects
openEuler:Mainline
pcre2
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 5
View file
_service:tar_scm:pcre2.spec
Changed
@@ -1,6 +1,6 @@ Name: pcre2 Version: 10.40 -Release: 3 +Release: 4 Summary: Perl Compatible Regular Expressions License: BSD URL: http://www.pcre.org/ @@ -16,6 +16,10 @@ Patch6015: backport-Fixed-an-issue-in-the-backtracking-optimization-of-c.patch Patch6016: backport-jit-fail-early-in-ffcps_-if-subject-shorter-than-off.patch Patch6017: backport-jit-fix-pcre2_jit_free_unused_memory-if-sljit-not-us.patch +Patch6018: backport-pcre2grep-document-better-possible-multiline-matchin.patch +Patch6019: backport-no-partial-match-if-trailing-data-is-invalid-utf-238.patch +Patch6020: backport-Fix-an-invalid-match-of-ascii-word-classes-when-inva.patch +Patch6021: backport-fix-wrong-test.patch BuildRequires: autoconf libtool automake coreutils gcc make readline-devel Obsoletes: pcre2-utf16 pcre2-utf32 pcre2-tools @@ -132,6 +136,9 @@ %{_pkgdocdir}/html/ %changelog +* Mon Jun 26 2023 yangmingtai <yangmingtai@huawei.com> - 10.40-4 +- DESC:sync community patches + * Thu Mar 16 2023 yangmingtai <yangmingtai@huawei.com> - 10.40-3 - DESC:sync community patches
View file
_service:tar_scm:backport-Fix-an-invalid-match-of-ascii-word-classes-when-inva.patch
Added
@@ -0,0 +1,41 @@ +From 2c08b619dc973beacc474dcb67cda8cd366200ce Mon Sep 17 00:00:00 2001 +From: Zoltan Herczeg <hzmester@freemail.hu> +Date: Tue, 11 Apr 2023 12:42:11 +0000 +Subject: PATCH Fix an invalid match of ascii word classes when invalid utf + is enabled + +Fixes #224 +Conflict:delete changelog +Reference:https://github.com/PCRE2Project/pcre2/commit/2c08b619dc973beacc474dcb67cda8cd366200ce +--- + src/pcre2_jit_compile.c | 1 + + src/pcre2_jit_test.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c +index 75ba610..81b7a93 100644 +--- a/src/pcre2_jit_compile.c ++++ b/src/pcre2_jit_compile.c +@@ -4132,6 +4132,7 @@ if (negated) + + if (common->invalid_utf) + { ++ OP1(SLJIT_MOV, TMP1, 0, TMP2, 0); + add_jump(compiler, &common->utfreadchar_invalid, JUMP(SLJIT_FAST_CALL)); + add_jump(compiler, backtracks, CMP(SLJIT_EQUAL, TMP1, 0, SLJIT_IMM, INVALID_UTF_CHAR)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 0); +diff --git a/src/pcre2_jit_test.c b/src/pcre2_jit_test.c +index e1f0bbc..1a1f6c5 100644 +--- a/src/pcre2_jit_test.c ++++ b/src/pcre2_jit_test.c +@@ -1979,6 +1979,7 @@ static const struct invalid_utf8_regression_test_case invalid_utf8_regression_te + { PCRE2_UTF, CI, 0, 0, 0, 7, 11, { "#\xc7\x85#", NULL }, "\x80\x80#\xc7\x80\x80\x80#\xc7\x85#" }, + + { PCRE2_UTF | PCRE2_UCP, CI, 0, 0, 0, -1, -1, { "\\s", NULL }, "\xed\xa0\x80" }, ++ { PCRE2_UTF, CI, 0, 0, 0, 1, 4, { "\\D", NULL }, "@\xe0\xab\xaa@" }, + + /* These two are not invalid UTF tests, but this infrastructure fits better for them. */ + { 0, PCRE2_JIT_COMPLETE, 0, 0, 1, -1, -1, { "\\X{2}", NULL }, "\r\n\n" }, +-- +2.27.0 +
View file
_service:tar_scm:backport-fix-wrong-test.patch
Added
@@ -0,0 +1,24 @@ +From a8558f252e8d8b3fd52d1dc8ea46ecefd991a187 Mon Sep 17 00:00:00 2001 +From: Zoltan Herczeg <hzmester@freemail.hu> +Date: Tue, 11 Apr 2023 12:55:01 +0000 +Subject: PATCH Fix wrong test + +Conflict:NA +Reference:https://github.com/PCRE2Project/pcre2/commit/a8558f252e8d8b3fd52d1dc8ea46ecefd991a187 +--- + src/pcre2_jit_test.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/pcre2_jit_test.c b/src/pcre2_jit_test.c +index 7a83bc02..331ed6d4 100644 +--- a/src/pcre2_jit_test.c ++++ b/src/pcre2_jit_test.c +@@ -1981,7 +1981,7 @@ static const struct invalid_utf8_regression_test_case invalid_utf8_regression_te + { PCRE2_UTF, CI, 0, 0, 0, 7, 11, { "#\xc7\x85#", NULL }, "\x80\x80#\xc7\x80\x80\x80#\xc7\x85#" }, + + { PCRE2_UTF | PCRE2_UCP, CI, 0, 0, 0, -1, -1, { "\\s", NULL }, "\xed\xa0\x80" }, +- { PCRE2_UTF, CI, 0, 0, 0, 1, 4, { "\\D", NULL }, "@\xe0\xab\xaa@" }, ++ { PCRE2_UTF, CI, 0, 0, 0, 0, 3, { "\\D", NULL }, "\xe0\xab\xaa@" }, + + /* These two are not invalid UTF tests, but this infrastructure fits better for them. */ + { 0, PCRE2_JIT_COMPLETE, 0, 0, 1, -1, -1, { "\\X{2}", NULL }, "\r\n\n" },
View file
_service:tar_scm:backport-no-partial-match-if-trailing-data-is-invalid-utf-238.patch
Added
@@ -0,0 +1,205 @@ +From 1bb1ef67eff000fe4aa8c1c45289938188e11e48 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <carenas@gmail.com> +Date: Fri, 21 Apr 2023 01:12:45 -0700 +Subject: PATCH no partial match if trailing data is invalid utf (#238) + +Avoid returning a partial match if one was found but followed by invalid +UTF, making the result consistent with JIT and unlike: + + PCRE2 version 10.34 2019-11-21 + re> /.a/match_invalid_utf,allvector,jit + data> b\xb1\=ph,ovector=1 + No match + 0: <unchanged> + data> b\xb1\=ph,ovector=1,no_jit + Partial match: b\x{b1} + ** ovector1 is not equal to the subject length: 1 != 2 + 0: 0 1 + +Conflict:NA +Reference:https://github.com/PCRE2Project/pcre2/commit/1bb1ef67eff000fe4aa8c1c45289938188e11e48 +--- + src/pcre2_match.c | 1 + + testdata/testinput10 | 19 +++++++++++++++++++ + testdata/testinput12 | 14 ++++++++++++++ + testdata/testoutput10 | 32 ++++++++++++++++++++++++++++++++ + testdata/testoutput12-16 | 22 ++++++++++++++++++++++ + testdata/testoutput12-32 | 22 ++++++++++++++++++++++ + 6 files changed, 110 insertions(+) + +diff --git a/src/pcre2_match.c b/src/pcre2_match.c +index ea98af3c..afe3036b 100644 +--- a/src/pcre2_match.c ++++ b/src/pcre2_match.c +@@ -7454,6 +7454,7 @@ if (utf && end_subject != true_end_subject && + if (start_match >= true_end_subject) + { + rc = MATCH_NOMATCH; /* In case it was partial */ ++ match_partial = NULL; + break; + } + +diff --git a/testdata/testinput10 b/testdata/testinput10 +index 53e37cbc..27321e37 100644 +--- a/testdata/testinput10 ++++ b/testdata/testinput10 +@@ -506,6 +506,25 @@ + \= Expect no match + ab\x80cdef\=ph + ++/.a/match_invalid_utf ++ ab\=ph ++ ab\=ps ++ b\xf0\x91\x88b\=ph ++ b\xf0\x91\x88b\=ps ++ b\xf0\x91\x88\xb4a ++\= Expect no match ++ b\x80\=ph ++ b\x80\=ps ++ b\xf0\x91\x88\=ph ++ b\xf0\x91\x88\=ps ++ ++/.a$/match_invalid_utf ++ ab\=ph ++ ab\=ps ++\= Expect no match ++ b\xf0\x91\x98\=ph ++ b\xf0\x91\x98\=ps ++ + /ab$/match_invalid_utf + ab\x80cdeab + \= Expect no match +diff --git a/testdata/testinput12 b/testdata/testinput12 +index 9b4f8d34..7a85eb57 100644 +--- a/testdata/testinput12 ++++ b/testdata/testinput12 +@@ -413,6 +413,20 @@ + \= Expect no match + ab\x{df00}cdef\=ph + ++/.a/match_invalid_utf ++ ab\=ph ++ ab\=ps ++\= Expect no match ++ b\x{df00}\=ph ++ b\x{df00}\=ps ++ ++/.a$/match_invalid_utf ++ ab\=ph ++ ab\=ps ++\= Expect no match ++ b\x{df00}\=ph ++ b\x{df00}\=ps ++ + /ab$/match_invalid_utf + ab\x{df00}cdeab + \= Expect no match +diff --git a/testdata/testoutput10 b/testdata/testoutput10 +index d4085106..1f4c876b 100644 +--- a/testdata/testoutput10 ++++ b/testdata/testoutput10 +@@ -1646,6 +1646,38 @@ Partial match: ab + ab\x80cdef\=ph + No match + ++/.a/match_invalid_utf ++ ab\=ph ++Partial match: b ++ ab\=ps ++Partial match: b ++ b\xf0\x91\x88b\=ph ++Partial match: b ++ b\xf0\x91\x88b\=ps ++Partial match: b ++ b\xf0\x91\x88\xb4a ++ 0: \x{11234}a ++\= Expect no match ++ b\x80\=ph ++No match ++ b\x80\=ps ++No match ++ b\xf0\x91\x88\=ph ++No match ++ b\xf0\x91\x88\=ps ++No match ++ ++/.a$/match_invalid_utf ++ ab\=ph ++Partial match: b ++ ab\=ps ++Partial match: b ++\= Expect no match ++ b\xf0\x91\x98\=ph ++No match ++ b\xf0\x91\x98\=ps ++No match ++ + /ab$/match_invalid_utf + ab\x80cdeab + 0: ab +diff --git a/testdata/testoutput12-16 b/testdata/testoutput12-16 +index 84c48581..98676324 100644 +--- a/testdata/testoutput12-16 ++++ b/testdata/testoutput12-16 +@@ -1522,6 +1522,28 @@ Partial match: ab + ab\x{df00}cdef\=ph + No match + ++/.a/match_invalid_utf ++ ab\=ph ++Partial match: b ++ ab\=ps ++Partial match: b ++\= Expect no match ++ b\x{df00}\=ph ++No match ++ b\x{df00}\=ps ++No match ++ ++/.a$/match_invalid_utf ++ ab\=ph ++Partial match: b ++ ab\=ps ++Partial match: b ++\= Expect no match ++ b\x{df00}\=ph ++No match ++ b\x{df00}\=ps ++No match ++ + /ab$/match_invalid_utf + ab\x{df00}cdeab + 0: ab +diff --git a/testdata/testoutput12-32 b/testdata/testoutput12-32 +index 03b6e394..3a20dd4b 100644 +--- a/testdata/testoutput12-32 ++++ b/testdata/testoutput12-32 +@@ -1520,6 +1520,28 @@ Partial match: ab + ab\x{df00}cdef\=ph + No match + ++/.a/match_invalid_utf ++ ab\=ph ++Partial match: b ++ ab\=ps ++Partial match: b ++\= Expect no match ++ b\x{df00}\=ph ++No match ++ b\x{df00}\=ps ++No match ++ ++/.a$/match_invalid_utf ++ ab\=ph ++Partial match: b ++ ab\=ps ++Partial match: b ++\= Expect no match ++ b\x{df00}\=ph ++No match ++ b\x{df00}\=ps ++No match ++ + /ab$/match_invalid_utf + ab\x{df00}cdeab + 0: ab
View file
_service:tar_scm:backport-pcre2grep-document-better-possible-multiline-matchin.patch
Added
@@ -0,0 +1,84 @@ +From 1bc34ffa64c33381d793fb5cdddf3f484e603d23 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <carenas@gmail.com> +Date: Fri, 12 May 2023 07:54:02 -0700 +Subject: PATCH pcre2grep: document better possible multiline matching misses + (#252) + +While at it, remove a misplaced cast that would cause problems for +subjects over 2GB and a few typos. + +Conflict:adapt context +Reference:https://github.com/PCRE2Project/pcre2/commit/1bc34ffa64c33381d793fb5cdddf3f484e603d23 +--- + doc/pcre2grep.1 | 11 ++++++++--- + src/pcre2_compile.c | 4 ++-- + src/pcre2grep.c | 2 +- + 3 files changed, 11 insertions(+), 6 deletions(-) + +diff --git a/doc/pcre2grep.1 b/doc/pcre2grep.1 +index 1081591..5077304 100644 +--- a/doc/pcre2grep.1 ++++ b/doc/pcre2grep.1 +@@ -66,6 +66,9 @@ The block of memory that is actually used is three times the "buffer size", to + allow for buffering "before" and "after" lines. If the buffer size is too + small, fewer than requested "before" and "after" lines may be output. + .P ++When matching with a multiline pattern, the size of the buffer must be at least ++half of the maximum match expected or the pattern might fail to match. ++.P + Patterns can be no longer than 8KiB or BUFSIZ bytes, whichever is the greater. + BUFSIZ is defined in \fB<stdio.h>\fP. When there is more than one pattern + (specified by the use of \fB-e\fP and/or \fB-f\fP), each pattern is applied to +@@ -201,7 +204,7 @@ exactly the same as the number of lines that would have been output, but if the + \fB-M\fP (multiline) option is used (without \fB-v\fP), there may be more + suppressed lines than the count (that is, the number of matches). + .sp +-If no lines are selected, the number zero is output. If several files are are ++If no lines are selected, the number zero is output. If several files are + being scanned, a count is output for each of them and the \fB-t\fP option can + be used to cause a total to be output at the end. However, if the + \fB--files-with-matches\fP option is also used, only those files whose counts +@@ -490,8 +493,10 @@ well as possibly handling a two-character newline sequence. + .sp + There is a limit to the number of lines that can be matched, imposed by the way + that \fBpcre2grep\fP buffers the input file as it scans it. With a sufficiently +-large processing buffer, this should not be a problem, but the \fB-M\fP option +-does not work when input is read line by line (see \fB--line-buffered\fP.) ++large processing buffer, this should not be a problem. ++.sp ++The \fB-M\fP option does not work when input is read line by line (see ++\fB--line-buffered\fP.) + .TP + \fB-m\fP \fInumber\fP, \fB--max-count\fP=\fInumber\fP + Stop processing after finding \fInumber\fP matching lines, or non-matching +diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c +index b906dc0..c6d4c60 100644 +--- a/src/pcre2_compile.c ++++ b/src/pcre2_compile.c +@@ -5549,8 +5549,8 @@ for (;; pptr++) + + If the class contains characters outside the 0-255 range, a different + opcode is compiled. It may optionally have a bit map for characters < 256, +- but those above are are explicitly listed afterwards. A flag code unit +- tells whether the bitmap is present, and whether this is a negated class or ++ but those above are explicitly listed afterwards. A flag code unit tells ++ whether the bitmap is present, and whether this is a negated class or + not. */ + + case META_CLASS_NOT: +diff --git a/src/pcre2grep.c b/src/pcre2grep.c +index 1484d67..d2ab620 100644 +--- a/src/pcre2grep.c ++++ b/src/pcre2grep.c +@@ -1843,7 +1843,7 @@ if (slen > 200) + + for (i = 1; p != NULL; p = p->next, i++) + { +- *mrc = pcre2_match(p->compiled, (PCRE2_SPTR)matchptr, (int)length, ++ *mrc = pcre2_match(p->compiled, (PCRE2_SPTR)matchptr, length, + startoffset, options, match_data, match_context); + if (*mrc >= 0) return TRUE; + if (*mrc == PCRE2_ERROR_NOMATCH) continue; +-- +2.27.0 +
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2