From: Adam Gołębiowski Date: Sat, 23 Feb 2019 19:35:37 +0000 (+0100) Subject: - updated to 8.43 X-Git-Tag: auto/th/pcre-8.43-1 X-Git-Url: http://git.pld-linux.org/gitweb.cgi?a=commitdiff_plain;h=e64019d237128662e63307c1a64a3dd1f5e4386f;p=packages%2Fpcre.git - updated to 8.43 --- diff --git a/pcre-8.42-Fix-anchoring-bug-in-conditional-subexpression.patch b/pcre-8.42-Fix-anchoring-bug-in-conditional-subexpression.patch deleted file mode 100644 index d7247bd..0000000 --- a/pcre-8.42-Fix-anchoring-bug-in-conditional-subexpression.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 7abc4de8303e8908eeb96714dac53ae10ff465e3 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Sun, 2 Sep 2018 17:05:38 +0000 -Subject: [PATCH] Fix anchoring bug in conditional subexpression. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1739 2f5784b3-3f2a-0410-8824-cb99058d5e15 -Petr Písař: Ported to 8.42 ---- - pcre_compile.c | 12 ++++++++++-- - testdata/testinput2 | 3 +++ - testdata/testoutput2 | 4 ++++ - - Version 8.42 20-March-2018 - -------------------------- -diff --git a/pcre_compile.c b/pcre_compile.c -index 3991d6c..6141fb3 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -8682,10 +8682,18 @@ do { - if (!is_anchored(scode, new_map, cd, atomcount)) return FALSE; - } - -- /* Positive forward assertions and conditions */ -+ /* Positive forward assertion */ - -- else if (op == OP_ASSERT || op == OP_COND) -+ else if (op == OP_ASSERT) -+ { -+ if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE; -+ } -+ -+ /* Condition; not anchored if no second branch */ -+ -+ else if (op == OP_COND) - { -+ if (scode[GET(scode,1)] != OP_ALT) return FALSE; - if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE; - } - -diff --git a/testdata/testinput2 b/testdata/testinput2 -index 8ba4dc4..3528de1 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -4257,4 +4257,7 @@ backtracking verbs. --/ - ab - aaab - -+/(?(?=^))b/ -+ abc -+ - /-- End of testinput2 --/ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index 61ed8d9..4ccda27 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -14721,4 +14721,8 @@ No need char - 0: ab - 1: a - -+/(?(?=^))b/ -+ abc -+ 0: b -+ - /-- End of testinput2 --/ --- -2.14.4 - diff --git a/pcre-8.42-Fix-bad-auto-possessify-for-certain-classes.patch b/pcre-8.42-Fix-bad-auto-possessify-for-certain-classes.patch deleted file mode 100644 index c47ec5f..0000000 --- a/pcre-8.42-Fix-bad-auto-possessify-for-certain-classes.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 952cac5f4a17e52aec7d0536f405b25428367840 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Fri, 17 Aug 2018 14:50:21 +0000 -Subject: [PATCH] Fix bad auto-possessify for certain classes. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1738 2f5784b3-3f2a-0410-8824-cb99058d5e15 -Petr Písař: Ported to 8.42. ---- - pcre_compile.c | 4 ++-- - testdata/testinput4 | 3 +++ - testdata/testoutput4 | 4 ++++ - -diff --git a/pcre_compile.c b/pcre_compile.c -index 6dd8886..3991d6c 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -6,7 +6,7 @@ - and semantics are as close as possible to those of the Perl 5 language. - - Written by Philip Hazel -- Copyright (c) 1997-2016 University of Cambridge -+ Copyright (c) 1997-2018 University of Cambridge - - ----------------------------------------------------------------------------- - Redistribution and use in source and binary forms, with or without -@@ -3299,7 +3299,7 @@ for(;;) - if ((*xclass_flags & XCL_MAP) == 0) - { - /* No bits are set for characters < 256. */ -- if (list[1] == 0) return TRUE; -+ if (list[1] == 0) return (*xclass_flags & XCL_NOT) == 0; - /* Might be an empty repeat. */ - continue; - } -diff --git a/testdata/testinput4 b/testdata/testinput4 -index 8bdbdac..63368c0 100644 ---- a/testdata/testinput4 -+++ b/testdata/testinput4 -@@ -727,4 +727,7 @@ - /\C(\W?Å¿)'?{{/8 - \\C(\\W?Å¿)'?{{ - -+/[^\x{100}-\x{ffff}]*[\x80-\xff]/8 -+ \x{99}\x{99}\x{99} -+ - /-- End of testinput4 --/ -diff --git a/testdata/testoutput4 b/testdata/testoutput4 -index d43c123..69e812c 100644 ---- a/testdata/testoutput4 -+++ b/testdata/testoutput4 -@@ -1277,4 +1277,8 @@ No match - \\C(\\W?Å¿)'?{{ - No match - -+/[^\x{100}-\x{ffff}]*[\x80-\xff]/8 -+ \x{99}\x{99}\x{99} -+ 0: \x{99}\x{99}\x{99} -+ - /-- End of testinput4 --/ --- -2.14.4 - diff --git a/pcre-8.42-Fix-subject-buffer-overread-in-JIT.patch b/pcre-8.42-Fix-subject-buffer-overread-in-JIT.patch deleted file mode 100644 index 1b64902..0000000 --- a/pcre-8.42-Fix-subject-buffer-overread-in-JIT.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 1aa76cb33f04fcea3127a0859450e5d18369e5e2 Mon Sep 17 00:00:00 2001 -From: zherczeg -Date: Fri, 21 Sep 2018 07:34:10 +0000 -Subject: [PATCH] Fix subject buffer overread in JIT. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1740 2f5784b3-3f2a-0410-8824-cb99058d5e15 -Petr Písař: Ported to 8.42. ---- - pcre_jit_compile.c | 2 +- - -diff --git a/pcre_jit_compile.c b/pcre_jit_compile.c -index 2bad74b..bc5f9c0 100644 ---- a/pcre_jit_compile.c -+++ b/pcre_jit_compile.c -@@ -9002,7 +9002,7 @@ if (exact > 1) - #ifdef SUPPORT_UTF - && !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.2 - diff --git a/pcre-8.42-Fix-two-C-wrapper-bugs-unnoticed-for-years.patch b/pcre-8.42-Fix-two-C-wrapper-bugs-unnoticed-for-years.patch deleted file mode 100644 index be2418a..0000000 --- a/pcre-8.42-Fix-two-C-wrapper-bugs-unnoticed-for-years.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 2ede5a4b4a98add3bbf982f5805e015e8c61c565 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Tue, 26 Jun 2018 16:51:43 +0000 -Subject: [PATCH] Fix two C++ wrapper bugs, unnoticed for years. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1735 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.42. - -diff --git a/pcrecpp.cc b/pcrecpp.cc -index d09c9ab..77a2fed 100644 ---- a/pcrecpp.cc -+++ b/pcrecpp.cc -@@ -80,6 +80,24 @@ static const string empty_string; - // If the user doesn't ask for any options, we just use this one - static RE_Options default_options; - -+// Specials for the start of patterns. See comments where start_options is used -+// below. (PH June 2018) -+static const char *start_options[] = { -+ "(*UTF8)", -+ "(*UTF)", -+ "(*UCP)", -+ "(*NO_START_OPT)", -+ "(*NO_AUTO_POSSESS)", -+ "(*LIMIT_RECURSION=", -+ "(*LIMIT_MATCH=", -+ "(*CRLF)", -+ "(*CR)", -+ "(*BSR_UNICODE)", -+ "(*BSR_ANYCRLF)", -+ "(*ANYCRLF)", -+ "(*ANY)", -+ "" }; -+ - void RE::Init(const string& pat, const RE_Options* options) { - pattern_ = pat; - if (options == NULL) { -@@ -135,7 +153,49 @@ pcre* RE::Compile(Anchor anchor) { - } else { - // Tack a '\z' at the end of RE. Parenthesize it first so that - // the '\z' applies to all top-level alternatives in the regexp. -- string wrapped = "(?:"; // A non-counting grouping operator -+ -+ /* When this code was written (for PCRE 6.0) it was enough just to -+ parenthesize the entire pattern. Unfortunately, when the feature of -+ starting patterns with (*UTF8) or (*CR) etc. was added to PCRE patterns, -+ this code was never updated. This bug was not noticed till 2018, long after -+ PCRE became obsolescent and its maintainer no longer around. Since PCRE is -+ frozen, I have added a hack to check for all the existing "start of -+ pattern" specials - knowing that no new ones will ever be added. I am not a -+ C++ programmer, so the code style is no doubt crude. It is also -+ inefficient, but is only run when the pattern starts with "(*". -+ PH June 2018. */ -+ -+ string wrapped = ""; -+ -+ if (pattern_.c_str()[0] == '(' && pattern_.c_str()[1] == '*') { -+ int kk, klen, kmat; -+ for (;;) { // Loop for any number of leading items -+ -+ for (kk = 0; start_options[kk][0] != 0; kk++) { -+ klen = strlen(start_options[kk]); -+ kmat = strncmp(pattern_.c_str(), start_options[kk], klen); -+ if (kmat >= 0) break; -+ } -+ if (kmat != 0) break; // Not found -+ -+ // If the item ended in "=" we must copy digits up to ")". -+ -+ if (start_options[kk][klen-1] == '=') { -+ while (isdigit(pattern_.c_str()[klen])) klen++; -+ if (pattern_.c_str()[klen] != ')') break; // Syntax error -+ klen++; -+ } -+ -+ // Move the item from the pattern to the start of the wrapped string. -+ -+ wrapped += pattern_.substr(0, klen); -+ pattern_.erase(0, klen); -+ } -+ } -+ -+ // Wrap the rest of the pattern. -+ -+ wrapped += "(?:"; // A non-counting grouping operator - wrapped += pattern_; - wrapped += ")\\z"; - re = pcre_compile(wrapped.c_str(), pcre_options, -@@ -415,7 +475,7 @@ int RE::GlobalReplace(const StringPiece& rewrite, - matchend++; - } - // We also need to advance more than one char if we're in utf8 mode. --#ifdef SUPPORT_UTF8 -+#ifdef SUPPORT_UTF - if (options_.utf8()) { - while (matchend < static_cast(str->length()) && - ((*str)[matchend] & 0xc0) == 0x80) -diff --git a/pcrecpp_unittest.cc b/pcrecpp_unittest.cc -index 4b15fbe..255066f 100644 ---- a/pcrecpp_unittest.cc -+++ b/pcrecpp_unittest.cc -@@ -309,7 +309,7 @@ static void TestReplace() { - "@aa", - "@@@", - 3 }, --#ifdef SUPPORT_UTF8 -+#ifdef SUPPORT_UTF - { "b*", - "bb", - "\xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xA0\xE3\x81\xB8", // utf8 -@@ -327,7 +327,7 @@ static void TestReplace() { - { "", NULL, NULL, NULL, NULL, 0 } - }; - --#ifdef SUPPORT_UTF8 -+#ifdef SUPPORT_UTF - const bool support_utf8 = true; - #else - const bool support_utf8 = false; -@@ -535,7 +535,7 @@ static void TestQuoteMetaLatin1() { - } - - static void TestQuoteMetaUtf8() { --#ifdef SUPPORT_UTF8 -+#ifdef SUPPORT_UTF - TestQuoteMeta("Pl\xc3\xa1\x63ido Domingo", pcrecpp::UTF8()); - TestQuoteMeta("xyz", pcrecpp::UTF8()); // No fancy utf8 - TestQuoteMeta("\xc2\xb0", pcrecpp::UTF8()); // 2-byte utf8 (degree symbol) -@@ -1178,7 +1178,7 @@ int main(int argc, char** argv) { - CHECK(re.error().empty()); // Must have no error - } - --#ifdef SUPPORT_UTF8 -+#ifdef SUPPORT_UTF - // Check UTF-8 handling - { - printf("Testing UTF-8 handling\n"); -@@ -1202,6 +1202,24 @@ int main(int argc, char** argv) { - CHECK(re_test1.FullMatch(utf8_string)); - RE re_test2("...", pcrecpp::UTF8()); - CHECK(re_test2.FullMatch(utf8_string)); -+ -+ // PH added these tests for leading option settings -+ -+ RE re_testZ1("(*UTF8)..."); -+ CHECK(re_testZ1.FullMatch(utf8_string)); -+ -+ RE re_testZ2("(*UTF)..."); -+ CHECK(re_testZ2.FullMatch(utf8_string)); -+ -+ RE re_testZ3("(*UCP)(*UTF)..."); -+ CHECK(re_testZ3.FullMatch(utf8_string)); -+ -+ RE re_testZ4("(*UCP)(*LIMIT_MATCH=1000)(*UTF)..."); -+ CHECK(re_testZ4.FullMatch(utf8_string)); -+ -+ RE re_testZ5("(*UCP)(*LIMIT_MATCH=1000)(*ANY)(*UTF)..."); -+ CHECK(re_testZ5.FullMatch(utf8_string)); -+ - - // Check that '.' matches one byte or UTF-8 character - // according to the mode. -@@ -1248,7 +1266,7 @@ int main(int argc, char** argv) { - CHECK(!match_sentence.FullMatch(target)); - CHECK(!match_sentence_re.FullMatch(target)); - } --#endif /* def SUPPORT_UTF8 */ -+#endif /* def SUPPORT_UTF */ - - printf("Testing error reporting\n"); - --- -2.14.4 - diff --git a/pcre-8.42-Fix-typos-in-pcrgrep.patch b/pcre-8.42-Fix-typos-in-pcrgrep.patch deleted file mode 100644 index e09fe2d..0000000 --- a/pcre-8.42-Fix-typos-in-pcrgrep.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 6d8fa98d5167bdd915ce1e32bcb6aaed078e5938 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Tue, 26 Jun 2018 17:04:02 +0000 -Subject: [PATCH] Fix typos in pcrgrep. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1736 2f5784b3-3f2a-0410-8824-cb99058d5e15 -Petr Písař: Ported to 8.42. - -diff --git a/pcregrep.c b/pcregrep.c -index a406be9..5982406 100644 ---- a/pcregrep.c -+++ b/pcregrep.c -@@ -2252,7 +2252,7 @@ if (isdirectory(pathname)) - int fnlength = strlen(pathname) + strlen(nextfile) + 2; - if (fnlength > 2048) - { -- fprintf(stderr, "pcre2grep: recursive filename is too long\n"); -+ fprintf(stderr, "pcregrep: recursive filename is too long\n"); - rc = 2; - break; - } -@@ -3034,7 +3034,7 @@ LC_ALL environment variable is set, and if so, use it. */ - if (locale == NULL) - { - locale = getenv("LC_ALL"); -- locale_from = "LCC_ALL"; -+ locale_from = "LC_ALL"; - } - - if (locale == NULL) --- -2.14.4 - diff --git a/pcre-8.42-Fix-zero-repeat-leading-subroutine-call-first-charac.patch b/pcre-8.42-Fix-zero-repeat-leading-subroutine-call-first-charac.patch deleted file mode 100644 index c997a5b..0000000 --- a/pcre-8.42-Fix-zero-repeat-leading-subroutine-call-first-charac.patch +++ /dev/null @@ -1,89 +0,0 @@ -From a65e1b693110caa27fe8f724583fc28ce5924026 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Sat, 20 Oct 2018 09:38:44 +0000 -Subject: [PATCH] Fix zero-repeat leading subroutine call first character - error. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1741 2f5784b3-3f2a-0410-8824-cb99058d5e15 -Petr Písař: Ported to 8.42. ---- - pcre_compile.c | 2 ++ - testdata/testinput1 | 15 +++++++++++++++ - testdata/testoutput1 | 24 ++++++++++++++++++++++++ - -diff --git a/pcre_compile.c b/pcre_compile.c -index 6141fb3..079d30a 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -7642,6 +7642,8 @@ for (;; ptr++) - /* Can't determine a first byte now */ - - if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; -+ zerofirstchar = firstchar; -+ zerofirstcharflags = firstcharflags; - continue; - - -diff --git a/testdata/testinput1 b/testdata/testinput1 -index 5c23f41..02e4f48 100644 ---- a/testdata/testinput1 -+++ b/testdata/testinput1 -@@ -5742,4 +5742,19 @@ AbcdCBefgBhiBqz - /X+(?#comment)?/ - >XXX< - -+/ (? \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 eff8ecc..e6147e6 100644 ---- a/testdata/testoutput1 -+++ b/testdata/testoutput1 -@@ -9446,4 +9446,28 @@ No match - >XXX< - 0: X - -+/ (? \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/pcre.spec b/pcre.spec index 7eaf771..c481e3a 100644 --- a/pcre.spec +++ b/pcre.spec @@ -11,20 +11,14 @@ Summary: Perl-Compatible Regular Expression library Summary(pl.UTF-8): Biblioteka perlowych wyrażeń regularnych Summary(pt_BR.UTF-8): Biblioteca de expressões regulares versão Name: pcre -Version: 8.42 -Release: 2 +Version: 8.43 +Release: 1 License: BSD (see LICENCE) Group: Libraries Source0: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/%{name}-%{version}.tar.bz2 -# Source0-md5: 085b6aa253e0f91cae70b3cdbe8c1ac2 +# Source0-md5: 636222e79e392c3d95dcc545f24f98c4 Patch0: %{name}-pcreposix-glibc-conflict.patch Patch1: pcre-8.41-fix_stack_estimator.patch -Patch2: pcre-8.42-Fix-anchoring-bug-in-conditional-subexpression.patch -Patch3: pcre-8.42-Fix-bad-auto-possessify-for-certain-classes.patch -Patch4: pcre-8.42-Fix-subject-buffer-overread-in-JIT.patch -Patch5: pcre-8.42-Fix-two-C-wrapper-bugs-unnoticed-for-years.patch -Patch6: pcre-8.42-Fix-typos-in-pcrgrep.patch -Patch7: pcre-8.42-Fix-zero-repeat-leading-subroutine-call-first-charac.patch URL: http://www.pcre.org/ BuildRequires: autoconf >= 2.57 BuildRequires: automake @@ -274,12 +268,6 @@ Dokumentacja dla PCRE w formacie HTML. %setup -q %patch0 -p1 %patch1 -p2 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 %build %{__libtoolize}