From cc814f7bdbd917f67c3f0ae695106c8bb763f82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 14 Jun 2017 09:27:09 +0200 Subject: [PATCH] 8.41 RC1 bump --- .gitignore | 1 + ...haracter-256-for-isprint-in-pcretest.patch | 54 ------------- ...pcre2grep-multiline-with-only-matchi.patch | 73 ----------------- ...ndling-of-possessive-repeated-charac.patch | 67 ---------------- ...erty-crash-for-32-bit-characters-gre.patch | 72 ----------------- ...se-in-the-JIT-compiler-reported-by-i.patch | 64 --------------- ...pe-detection-when-32-bit-and-UCP-are.patch | 78 ------------------- ...of-style-comment-between-quantifier-.patch | 67 ---------------- ...-to-possible-buffer-overflow-in-pcre.patch | 36 --------- ...ke-pcretest-check-size-of-O-argument.patch | 37 --------- pcre-8.40-Minor-doc-update.patch | 39 ---------- ...arning-about-too-small-buffer-for-pr.patch | 50 ------------ pcre-8.41-RC1-JIT-compiler-update.patch | 44 +++++++++++ pcre.spec | 74 ++++-------------- sources | 2 +- 15 files changed, 61 insertions(+), 697 deletions(-) delete mode 100644 pcre-8.40-Check-character-256-for-isprint-in-pcretest.patch delete mode 100644 pcre-8.40-Correct-fix-for-pcre2grep-multiline-with-only-matchi.patch delete mode 100644 pcre-8.40-Fix-DFA-match-handling-of-possessive-repeated-charac.patch delete mode 100644 pcre-8.40-Fix-Unicode-property-crash-for-32-bit-characters-gre.patch delete mode 100644 pcre-8.40-Fix-a-missing-else-in-the-JIT-compiler-reported-by-i.patch delete mode 100644 pcre-8.40-Fix-character-type-detection-when-32-bit-and-UCP-are.patch delete mode 100644 pcre-8.40-Fix-recognition-of-style-comment-between-quantifier-.patch delete mode 100644 pcre-8.40-Fix-typo-leading-to-possible-buffer-overflow-in-pcre.patch delete mode 100644 pcre-8.40-Make-pcretest-check-size-of-O-argument.patch delete mode 100644 pcre-8.40-Minor-doc-update.patch delete mode 100644 pcre-8.40-Silent-a-GCC-7-warning-about-too-small-buffer-for-pr.patch create mode 100644 pcre-8.41-RC1-JIT-compiler-update.patch diff --git a/.gitignore b/.gitignore index 67e4c92..9a59dd8 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ pcre-8.10.tar.bz2 /pcre-8.39.tar.bz2 /pcre-8.40-RC1.tar.bz2 /pcre-8.40.tar.bz2 +/pcre-8.41-RC1.tar.bz2 diff --git a/pcre-8.40-Check-character-256-for-isprint-in-pcretest.patch b/pcre-8.40-Check-character-256-for-isprint-in-pcretest.patch deleted file mode 100644 index aa01397..0000000 --- a/pcre-8.40-Check-character-256-for-isprint-in-pcretest.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 686660568dde71f9a7f8791cbb8a77702b3ea820 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Wed, 22 Feb 2017 17:37:47 +0000 -Subject: [PATCH] Check character < 256 for isprint() in pcretest. -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@1685 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.40. - -diff --git a/pcretest.c b/pcretest.c -index 5b73a91..797f99c 100644 ---- a/pcretest.c -+++ b/pcretest.c -@@ -177,7 +177,7 @@ that differ in their output from isprint() even in the "C" locale. */ - #define PRINTABLE(c) ((c) >= 32 && (c) < 127) - #endif - --#define PRINTOK(c) (locale_set? isprint(c) : PRINTABLE(c)) -+#define PRINTOK(c) (locale_set? (((c) < 256) && isprint(c)) : PRINTABLE(c)) - - /* Posix support is disabled in 16 or 32 bit only mode. */ - #if !defined SUPPORT_PCRE8 && !defined NOPOSIX -diff --git a/testdata/testinput15 b/testdata/testinput15 -index 83e2677..c065105 100644 ---- a/testdata/testinput15 -+++ b/testdata/testinput15 -@@ -363,4 +363,7 @@ correctly, but that messes up comparisons). --/ - - /abc/89 - -+//8+L -+ \xf1\xad\xae\xae -+ - /-- End of testinput15 --/ -diff --git a/testdata/testoutput15 b/testdata/testoutput15 -index bad2807..e4e123c 100644 ---- a/testdata/testoutput15 -+++ b/testdata/testoutput15 -@@ -1136,4 +1136,9 @@ Failed: setting UTF is disabled by the application at offset 0 - /abc/89 - Failed: setting UTF is disabled by the application at offset 0 - -+//8+L -+ \xf1\xad\xae\xae -+ 0: -+ 0+ \x{6dbae} -+ - /-- End of testinput15 --/ --- -2.7.4 - diff --git a/pcre-8.40-Correct-fix-for-pcre2grep-multiline-with-only-matchi.patch b/pcre-8.40-Correct-fix-for-pcre2grep-multiline-with-only-matchi.patch deleted file mode 100644 index 4d5b694..0000000 --- a/pcre-8.40-Correct-fix-for-pcre2grep-multiline-with-only-matchi.patch +++ /dev/null @@ -1,73 +0,0 @@ -From dcee2708b5d37437fda9dbd07ccac6c9badd6892 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Fri, 10 Feb 2017 17:47:34 +0000 -Subject: [PATCH] Correct fix for pcre2grep multiline with --only-matching. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This is series of two patches ported to 8.40: - -commit 5be027b624bc866702808abadfe5f99360414086 -Author: ph10 -Date: Fri Feb 10 17:47:34 2017 +0000 - - Correct fix for pcre2grep multiline with --only-matching. - - git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1678 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -commit 8b0fdf16e57ce9a653a0a03c39f6cc061e8122e8 -Author: ph10 -Date: Sun Feb 12 13:28:11 2017 +0000 - - Fix bug in most recent fix for multiline pcre2grep. - - git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1679 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Signed-off-by: Petr Písař ---- - pcregrep.c | 21 ++++++++++++++++----- - 1 file changed, 16 insertions(+), 5 deletions(-) - -diff --git a/pcregrep.c b/pcregrep.c -index fd2a676..3cd70ee 100644 ---- a/pcregrep.c -+++ b/pcregrep.c -@@ -1804,11 +1804,6 @@ while (ptr < endptr) - if (line_buffered) fflush(stdout); - rc = 0; /* Had some success */ - -- /* If the current match ended past the end of the line (only possible -- in multiline mode), we are done with this line. */ -- -- if ((unsigned int)offsets[1] > linelength) goto END_ONE_MATCH; -- - startoffset = offsets[1]; /* Restart after the match */ - if (startoffset <= oldstartoffset) - { -@@ -1818,6 +1813,22 @@ while (ptr < endptr) - if (utf8) - while ((matchptr[startoffset] & 0xc0) == 0x80) startoffset++; - } -+ -+ /* If the current match ended past the end of the line (only possible -+ in multiline mode), we must move on to the line in which it did end -+ before searching for more matches. */ -+ -+ while (startoffset > (int)linelength) -+ { -+ matchptr = ptr += linelength + endlinelength; -+ filepos += (int)(linelength + endlinelength); -+ linenumber++; -+ startoffset -= (int)(linelength + endlinelength); -+ t = end_of_line(ptr, endptr, &endlinelength); -+ linelength = t - ptr - endlinelength; -+ length = (size_t)(endptr - ptr); -+ } -+ - goto ONLY_MATCHING_RESTART; - } - } --- -2.7.4 - diff --git a/pcre-8.40-Fix-DFA-match-handling-of-possessive-repeated-charac.patch b/pcre-8.40-Fix-DFA-match-handling-of-possessive-repeated-charac.patch deleted file mode 100644 index b48ad99..0000000 --- a/pcre-8.40-Fix-DFA-match-handling-of-possessive-repeated-charac.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 881b9580da401953f2a94b42cb9cc275b4719341 Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Wed, 22 Mar 2017 15:17:45 +0000 -Subject: [PATCH] Fix DFA match handling of possessive repeated character class - (Bugzilla 2086). -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@1689 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.40. ---- - pcre_dfa_exec.c | 4 ++-- - testdata/testinput8 | 3 +++ - testdata/testoutput8 | 4 ++++ - -diff --git a/pcre_dfa_exec.c b/pcre_dfa_exec.c -index 170ce6a..bc09ced 100644 ---- a/pcre_dfa_exec.c -+++ b/pcre_dfa_exec.c -@@ -7,7 +7,7 @@ and semantics are as close as possible to those of the Perl 5 language (but see - below for why this module is different). - - Written by Philip Hazel -- Copyright (c) 1997-2014 University of Cambridge -+ Copyright (c) 1997-2017 University of Cambridge - - ----------------------------------------------------------------------------- - Redistribution and use in source and binary forms, with or without -@@ -2625,7 +2625,7 @@ for (;;) - if (isinclass) - { - int max = (int)GET2(ecode, 1 + IMM2_SIZE); -- if (*ecode == OP_CRPOSRANGE) -+ if (*ecode == OP_CRPOSRANGE && count >= (int)GET2(ecode, 1)) - { - active_count--; /* Remove non-match possibility */ - next_active_state--; -diff --git a/testdata/testinput8 b/testdata/testinput8 -index 7f8fa82..e931410 100644 ---- a/testdata/testinput8 -+++ b/testdata/testinput8 -@@ -4845,4 +4845,7 @@ - aaa\D - a\D - -+/(02-)?[0-9]{3}-[0-9]{3}/ -+ 02-123-123 -+ - /-- End of testinput8 --/ -diff --git a/testdata/testoutput8 b/testdata/testoutput8 -index 17b667a..4984376 100644 ---- a/testdata/testoutput8 -+++ b/testdata/testoutput8 -@@ -7801,4 +7801,8 @@ No match - ** Show all captures ignored after DFA matching - 0: a - -+/(02-)?[0-9]{3}-[0-9]{3}/ -+ 02-123-123 -+ 0: 02-123-123 -+ - /-- End of testinput8 --/ --- -2.7.4 - diff --git a/pcre-8.40-Fix-Unicode-property-crash-for-32-bit-characters-gre.patch b/pcre-8.40-Fix-Unicode-property-crash-for-32-bit-characters-gre.patch deleted file mode 100644 index 7d2a9f7..0000000 --- a/pcre-8.40-Fix-Unicode-property-crash-for-32-bit-characters-gre.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 8037f71d03b3cd8919248f38448a0a2d3715c18c Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Fri, 24 Feb 2017 17:30:30 +0000 -Subject: [PATCH] Fix Unicode property crash for 32-bit characters greater than - 0x10ffff. -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@1688 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.40. - -diff --git a/pcre_internal.h b/pcre_internal.h -index 2923b29..154d3f6 100644 ---- a/pcre_internal.h -+++ b/pcre_internal.h -@@ -2772,6 +2772,9 @@ extern const pcre_uint8 PRIV(ucd_stage1)[]; - extern const pcre_uint16 PRIV(ucd_stage2)[]; - extern const pcre_uint32 PRIV(ucp_gentype)[]; - extern const pcre_uint32 PRIV(ucp_gbtable)[]; -+#ifdef COMPILE_PCRE32 -+extern const ucd_record PRIV(dummy_ucd_record)[]; -+#endif - #ifdef SUPPORT_JIT - extern const int PRIV(ucp_typerange)[]; - #endif -@@ -2780,9 +2783,15 @@ extern const int PRIV(ucp_typerange)[]; - /* UCD access macros */ - - #define UCD_BLOCK_SIZE 128 --#define GET_UCD(ch) (PRIV(ucd_records) + \ -+#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \ - PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \ - UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE]) -+ -+#ifdef COMPILE_PCRE32 -+#define GET_UCD(ch) ((ch > 0x10ffff)? PRIV(dummy_ucd_record) : REAL_GET_UCD(ch)) -+#else -+#define GET_UCD(ch) REAL_GET_UCD(ch) -+#endif - - #define UCD_CHARTYPE(ch) GET_UCD(ch)->chartype - #define UCD_SCRIPT(ch) GET_UCD(ch)->script -diff --git a/pcre_ucd.c b/pcre_ucd.c -index 69c4fd4..f22f826 100644 ---- a/pcre_ucd.c -+++ b/pcre_ucd.c -@@ -38,6 +38,20 @@ const pcre_uint16 PRIV(ucd_stage2)[] = {0}; - const pcre_uint32 PRIV(ucd_caseless_sets)[] = {0}; - #else - -+/* If the 32-bit library is run in non-32-bit mode, character values -+greater than 0x10ffff may be encountered. For these we set up a -+special record. */ -+ -+#ifdef COMPILE_PCRE32 -+const ucd_record PRIV(dummy_ucd_record)[] = {{ -+ ucp_Common, /* script */ -+ ucp_Cn, /* type unassigned */ -+ ucp_gbOther, /* grapheme break property */ -+ 0, /* case set */ -+ 0, /* other case */ -+ }}; -+#endif -+ - /* When recompiling tables with a new Unicode version, please check the - types in this structure definition from pcre_internal.h (the actual - field names will be different): --- -2.7.4 - diff --git a/pcre-8.40-Fix-a-missing-else-in-the-JIT-compiler-reported-by-i.patch b/pcre-8.40-Fix-a-missing-else-in-the-JIT-compiler-reported-by-i.patch deleted file mode 100644 index af9c59f..0000000 --- a/pcre-8.40-Fix-a-missing-else-in-the-JIT-compiler-reported-by-i.patch +++ /dev/null @@ -1,64 +0,0 @@ -From ad21e1941bfe5d5c8d8474028139343f884bf28c Mon Sep 17 00:00:00 2001 -From: zherczeg -Date: Tue, 14 Feb 2017 08:48:18 +0000 -Subject: [PATCH] Fix a missing else in the JIT compiler reported by - 'idaifish'. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Petr Pisar: Ported to 8.40: - -commit 7ddfbe9d0b9f43402f8043e940172a318cc407c6 -Author: zherczeg -Date: Tue Feb 14 08:48:18 2017 +0000 - - Fix a missing else in the JIT compiler reported by 'idaifish'. - - git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1680 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Signed-off-by: Petr Písař ---- - pcre_jit_compile.c | 2 +- - testdata/testinput12 | 2 ++ - testdata/testoutput12 | 2 ++ - 3 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/pcre_jit_compile.c b/pcre_jit_compile.c -index 46ce6c6..a6e2ad5 100644 ---- a/pcre_jit_compile.c -+++ b/pcre_jit_compile.c -@@ -8111,7 +8111,7 @@ if (opcode == OP_COND || opcode == OP_SCOND) - - if (*matchingpath == OP_FAIL) - stacksize = 0; -- if (*matchingpath == OP_RREF) -+ else if (*matchingpath == OP_RREF) - { - stacksize = GET2(matchingpath, 1); - if (common->currententry == NULL) -diff --git a/testdata/testinput12 b/testdata/testinput12 -index 944be69..89ed456 100644 ---- a/testdata/testinput12 -+++ b/testdata/testinput12 -@@ -104,4 +104,6 @@ and a couple of things that are different with JIT. --/ - /(.|.)*?bx/ - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax - -+/((?(?!))x)(?'name')(?1)/S++ -+ - /-- End of testinput12 --/ -diff --git a/testdata/testoutput12 b/testdata/testoutput12 -index 8791108..7632c4e 100644 ---- a/testdata/testoutput12 -+++ b/testdata/testoutput12 -@@ -201,4 +201,6 @@ No match, mark = m (JIT) - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax - Error -8 (match limit exceeded) - -+/((?(?!))x)(?'name')(?1)/S++ -+ - /-- End of testinput12 --/ --- -2.7.4 - diff --git a/pcre-8.40-Fix-character-type-detection-when-32-bit-and-UCP-are.patch b/pcre-8.40-Fix-character-type-detection-when-32-bit-and-UCP-are.patch deleted file mode 100644 index 2ec84b5..0000000 --- a/pcre-8.40-Fix-character-type-detection-when-32-bit-and-UCP-are.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 3b8f1ab07fb1744c57f5d04c872e81d8d669de87 Mon Sep 17 00:00:00 2001 -From: zherczeg -Date: Fri, 31 Mar 2017 05:41:17 +0000 -Subject: [PATCH] Fix character type detection when 32-bit and UCP are enabled - but UTF is not 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@1693 2f5784b3-3f2a-0410-8824-cb99058d5e15 -Signed-off-by: Petr Písař ---- - pcre_jit_compile.c | 31 +++++++++++++++++++++++++++++++ - 1 file changed, 31 insertions(+) - -diff --git a/pcre_jit_compile.c b/pcre_jit_compile.c -index 1a8ce1e..c9db7ee 100644 ---- a/pcre_jit_compile.c -+++ b/pcre_jit_compile.c -@@ -559,6 +559,8 @@ the start pointers when the end of the capturing group has not yet reached. */ - - #define READ_CHAR_MAX 0x7fffffff - -+#define INVALID_UTF_CHAR 888 -+ - static pcre_uchar *bracketend(pcre_uchar *cc) - { - SLJIT_ASSERT((*cc >= OP_ASSERT && *cc <= OP_ASSERTBACK_NOT) || (*cc >= OP_ONCE && *cc <= OP_SCOND)); -@@ -3277,10 +3279,30 @@ static void do_getucd(compiler_common *common) - /* Search the UCD record for the character comes in TMP1. - Returns chartype in TMP1 and UCD offset in TMP2. */ - DEFINE_COMPILER; -+#ifdef COMPILE_PCRE32 -+struct sljit_jump *jump; -+#endif -+ -+#if defined SLJIT_DEBUG && SLJIT_DEBUG -+/* dummy_ucd_record */ -+const ucd_record *record = GET_UCD(INVALID_UTF_CHAR); -+SLJIT_ASSERT(record->script == ucp_Common && record->chartype == ucp_Cn && record->gbprop == ucp_gbOther); -+SLJIT_ASSERT(record->caseset == 0 && record->other_case == 0); -+#endif - - SLJIT_ASSERT(UCD_BLOCK_SIZE == 128 && sizeof(ucd_record) == 8); - - sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); -+ -+#ifdef COMPILE_PCRE32 -+if (!common->utf) -+ { -+ jump = CMP(SLJIT_LESS, TMP1, 0, SLJIT_IMM, 0x10ffff + 1); -+ OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, INVALID_UTF_CHAR); -+ JUMPHERE(jump); -+ } -+#endif -+ - OP2(SLJIT_LSHR, TMP2, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_SHIFT); - OP1(SLJIT_MOV_U8, TMP2, 0, SLJIT_MEM1(TMP2), (sljit_sw)PRIV(ucd_stage1)); - OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_MASK); -@@ -5636,6 +5658,15 @@ if (needstype || needsscript) - if (needschar && !charsaved) - OP1(SLJIT_MOV, RETURN_ADDR, 0, TMP1, 0); - -+#ifdef COMPILE_PCRE32 -+ if (!common->utf) -+ { -+ jump = CMP(SLJIT_LESS, TMP1, 0, SLJIT_IMM, 0x10ffff + 1); -+ OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, INVALID_UTF_CHAR); -+ JUMPHERE(jump); -+ } -+#endif -+ - OP2(SLJIT_LSHR, TMP2, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_SHIFT); - OP1(SLJIT_MOV_U8, TMP2, 0, SLJIT_MEM1(TMP2), (sljit_sw)PRIV(ucd_stage1)); - OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_MASK); --- -2.7.4 - diff --git a/pcre-8.40-Fix-recognition-of-style-comment-between-quantifier-.patch b/pcre-8.40-Fix-recognition-of-style-comment-between-quantifier-.patch deleted file mode 100644 index 9424a72..0000000 --- a/pcre-8.40-Fix-recognition-of-style-comment-between-quantifier-.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 63f1aabcabdc7ace28c649657fe2a4f880a87c5a Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Mon, 20 Feb 2017 17:45:21 +0000 -Subject: [PATCH] Fix recognition of (?# style comment between quantifier and - '+' or '?'. -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@1682 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.40. - -diff --git a/pcre_compile.c b/pcre_compile.c -index de92313..c787813 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -5739,6 +5739,21 @@ for (;; ptr++) - ptr = p - 1; /* Character before the next significant one. */ - } - -+ /* We also need to skip over (?# comments, which are not dependent on -+ extended mode. */ -+ -+ if (ptr[1] == CHAR_LEFT_PARENTHESIS && ptr[2] == CHAR_QUESTION_MARK && -+ ptr[3] == CHAR_NUMBER_SIGN) -+ { -+ ptr += 4; -+ while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; -+ if (*ptr == CHAR_NULL) -+ { -+ *errorcodeptr = ERR18; -+ goto FAILED; -+ } -+ } -+ - /* If the next character is '+', we have a possessive quantifier. This - implies greediness, whatever the setting of the PCRE_UNGREEDY option. - If the next character is '?' this is a minimizing repeat, by default, -diff --git a/testdata/testinput1 b/testdata/testinput1 -index 93abab3..5c23f41 100644 ---- a/testdata/testinput1 -+++ b/testdata/testinput1 -@@ -5739,4 +5739,7 @@ AbcdCBefgBhiBqz - /(?=.*X)X$/ - \ X - -+/X+(?#comment)?/ -+ >XXX< -+ - /-- End of testinput1 --/ -diff --git a/testdata/testoutput1 b/testdata/testoutput1 -index a2b3cff..eff8ecc 100644 ---- a/testdata/testoutput1 -+++ b/testdata/testoutput1 -@@ -9442,4 +9442,8 @@ No match - \ X - 0: X - -+/X+(?#comment)?/ -+ >XXX< -+ 0: X -+ - /-- End of testinput1 --/ --- -2.7.4 - diff --git a/pcre-8.40-Fix-typo-leading-to-possible-buffer-overflow-in-pcre.patch b/pcre-8.40-Fix-typo-leading-to-possible-buffer-overflow-in-pcre.patch deleted file mode 100644 index 6e96843..0000000 --- a/pcre-8.40-Fix-typo-leading-to-possible-buffer-overflow-in-pcre.patch +++ /dev/null @@ -1,36 +0,0 @@ -From b2f1496a36e68565421bd21485605d6af2a5819f Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Mon, 27 Mar 2017 16:00:16 +0000 -Subject: [PATCH] Fix typo (leading to possible buffer overflow in - pcre_copy_substring()) in pcretest. -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@1691 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.40. ---- - pcretest.c | 4 ++-- - -diff --git a/pcretest.c b/pcretest.c -index 0a153be..26578e1 100644 ---- a/pcretest.c -+++ b/pcretest.c -@@ -426,11 +426,11 @@ argument, the casting might be incorrectly applied. */ - #define PCRE_COPY_NAMED_SUBSTRING32(rc, re, bptr, offsets, count, \ - namesptr, cbuffer, size) \ - rc = pcre32_copy_named_substring((pcre32 *)re, (PCRE_SPTR32)bptr, offsets, \ -- count, (PCRE_SPTR32)namesptr, (PCRE_UCHAR32 *)cbuffer, size/2) -+ count, (PCRE_SPTR32)namesptr, (PCRE_UCHAR32 *)cbuffer, size/4) - - #define PCRE_COPY_SUBSTRING32(rc, bptr, offsets, count, i, cbuffer, size) \ - rc = pcre32_copy_substring((PCRE_SPTR32)bptr, offsets, count, i, \ -- (PCRE_UCHAR32 *)cbuffer, size/2) -+ (PCRE_UCHAR32 *)cbuffer, size/4) - - #define PCRE_DFA_EXEC32(count, re, extra, bptr, len, start_offset, options, \ - offsets, size_offsets, workspace, size_workspace) \ --- -2.7.4 - diff --git a/pcre-8.40-Make-pcretest-check-size-of-O-argument.patch b/pcre-8.40-Make-pcretest-check-size-of-O-argument.patch deleted file mode 100644 index cf59d7b..0000000 --- a/pcre-8.40-Make-pcretest-check-size-of-O-argument.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 312dd5d85714f73c247131b541405cf0bf24581b Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Thu, 23 Feb 2017 16:24:08 +0000 -Subject: [PATCH] Make pcretest check size of \O argument. -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@1686 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.40. - -diff --git a/pcretest.c b/pcretest.c -index 797f99c..0a153be 100644 ---- a/pcretest.c -+++ b/pcretest.c -@@ -4834,7 +4834,16 @@ while (!done) - continue; - - case 'O': -- while(isdigit(*p)) n = n * 10 + *p++ - '0'; -+ while(isdigit(*p)) -+ { -+ if (n > (INT_MAX-10)/10) /* Hack to stop fuzzers */ -+ { -+ printf("** \\O argument is too big\n"); -+ yield = 1; -+ goto EXIT; -+ } -+ n = n * 10 + *p++ - '0'; -+ } - if (n > size_offsets_max) - { - size_offsets_max = n; --- -2.7.4 - diff --git a/pcre-8.40-Minor-doc-update.patch b/pcre-8.40-Minor-doc-update.patch deleted file mode 100644 index d7c2ca1..0000000 --- a/pcre-8.40-Minor-doc-update.patch +++ /dev/null @@ -1,39 +0,0 @@ -From e7991eb5273b5b4162656f4b3d32e68a7430805a Mon Sep 17 00:00:00 2001 -From: ph10 -Date: Thu, 23 Feb 2017 17:25:44 +0000 -Subject: [PATCH] Minor doc update. -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@1687 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.40. - -diff --git a/doc/pcretest.1 b/doc/pcretest.1 -index 92640da..1b89071 100644 ---- a/doc/pcretest.1 -+++ b/doc/pcretest.1 -@@ -50,6 +50,10 @@ newline as data characters. However, in some Windows environments character 26 - (hex 1A) causes an immediate end of file, and no further data is read. For - maximum portability, therefore, it is safest to use only ASCII characters in - \fBpcretest\fP input files. -+.P -+The input is processed using using C's string functions, so must not -+contain binary zeroes, even though in Unix-like environments, \fBfgets()\fP -+treats any bytes other than newline as data characters. - . - . - .SH "PCRE's 8-BIT, 16-BIT AND 32-BIT LIBRARIES" -@@ -1151,6 +1155,6 @@ Cambridge CB2 3QH, England. - .rs - .sp - .nf --Last updated: 09 February 2014 --Copyright (c) 1997-2014 University of Cambridge. -+Last updated: 23 February 2017 -+Copyright (c) 1997-2017 University of Cambridge. - .fi --- -2.7.4 - diff --git a/pcre-8.40-Silent-a-GCC-7-warning-about-too-small-buffer-for-pr.patch b/pcre-8.40-Silent-a-GCC-7-warning-about-too-small-buffer-for-pr.patch deleted file mode 100644 index 312ff7f..0000000 --- a/pcre-8.40-Silent-a-GCC-7-warning-about-too-small-buffer-for-pr.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 875a7d84d6cc77431db27eeb140d9e94e4584e31 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Tue, 14 Feb 2017 17:00:44 +0100 -Subject: [PATCH] Silent a GCC 7 warning about too small buffer for printing an - integer -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -GCC 7 reports this warning: - -pcregrep.c:3194:68: warning: '%d' directive writing between 1 and 10 bytes into -a region of size 8 [-Wformat-overflow=] - if (patterns->next == NULL) s[0] = 0; else sprintf(s, " number %d", j); - ^~ -pcregrep.c:3194:59: note: directive argument in the range [1, 2147483647] - if (patterns->next == NULL) s[0] = 0; else sprintf(s, " number %d", j); - ^~~~~~~~~~~~ -because the buffer s[] has only 16 characters. With 32-bit integers, -one needs up to 19 bytes to represent the sprintf() text. - -This patch fixes it by avoiding the buffer at all. - -Signed-off-by: Petr Písař ---- - pcregrep.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/pcregrep.c b/pcregrep.c -index 3cd70ee..87a3c2e 100644 ---- a/pcregrep.c -+++ b/pcregrep.c -@@ -3190,9 +3190,11 @@ for (j = 1, cp = patterns; cp != NULL; j++, cp = cp->next) - cp->hint = pcre_study(cp->compiled, study_options, &error); - if (error != NULL) - { -- char s[16]; -- if (patterns->next == NULL) s[0] = 0; else sprintf(s, " number %d", j); -- fprintf(stderr, "pcregrep: Error while studying regex%s: %s\n", s, error); -+ if (patterns->next == NULL) -+ fprintf(stderr, "pcregrep: Error while studying regex: %s\n", error); -+ else -+ fprintf(stderr, "pcregrep: Error while studying regex number %d: %s\n", -+ j, error); - goto EXIT2; - } - #ifdef SUPPORT_PCREGREP_JIT --- -2.7.4 - diff --git a/pcre-8.41-RC1-JIT-compiler-update.patch b/pcre-8.41-RC1-JIT-compiler-update.patch new file mode 100644 index 0000000..c228f1f --- /dev/null +++ b/pcre-8.41-RC1-JIT-compiler-update.patch @@ -0,0 +1,44 @@ +From 90f29ca7fd20f31bf05ba8f996944663b1e7c5ed Mon Sep 17 00:00:00 2001 +From: zherczeg +Date: Thu, 15 Jun 2017 11:32:38 +0000 +Subject: [PATCH] JIT compiler update. +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@1704 2f5784b3-3f2a-0410-8824-cb99058d5e15 +Signed-off-by: Petr Písař +--- + sljit/sljitNativeARM_32.c | 2 +- + sljit/sljitNativeARM_64.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/sljit/sljitNativeARM_32.c b/sljit/sljitNativeARM_32.c +index baa816d..745da99 100644 +--- a/sljit/sljitNativeARM_32.c ++++ b/sljit/sljitNativeARM_32.c +@@ -2285,7 +2285,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_cmov(struct sljit_compiler *compil + #endif + } + +- return push_inst(compiler, (EMIT_DATA_PROCESS_INS(MOV_DP, 0, dst_reg, SLJIT_UNUSED, src) & ~COND_MASK) | cc); ++ return push_inst(compiler, (EMIT_DATA_PROCESS_INS(MOV_DP, 0, dst_reg, SLJIT_UNUSED, RM(src)) & ~COND_MASK) | cc); + } + + SLJIT_API_FUNC_ATTRIBUTE struct sljit_const* sljit_emit_const(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw, sljit_sw init_value) +diff --git a/sljit/sljitNativeARM_64.c b/sljit/sljitNativeARM_64.c +index cea8b33..fd67f50 100644 +--- a/sljit/sljitNativeARM_64.c ++++ b/sljit/sljitNativeARM_64.c +@@ -2063,7 +2063,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_cmov(struct sljit_compiler *compil + cc = get_cc(type & 0xff); + dst_reg &= ~SLJIT_I32_OP; + +- return push_inst(compiler, (CSEL ^ inv_bits) | (cc << 12) | RD(dst_reg) | RN(src) | RM(dst_reg)); ++ return push_inst(compiler, (CSEL ^ inv_bits) | (cc << 12) | RD(dst_reg) | RN(dst_reg) | RM(src)); + } + + SLJIT_API_FUNC_ATTRIBUTE struct sljit_const* sljit_emit_const(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw, sljit_sw init_value) +-- +2.9.4 + diff --git a/pcre.spec b/pcre.spec index e5c70ad..39852c1 100644 --- a/pcre.spec +++ b/pcre.spec @@ -1,11 +1,10 @@ # Is this a stable/testing release: -#%%global rcversion RC1 +%global rcversion RC1 Name: pcre -Version: 8.40 -Release: %{?rcversion:0.}7%{?rcversion:.%rcversion}%{?dist} +Version: 8.41 +Release: %{?rcversion:0.}1%{?rcversion:.%rcversion}%{?dist} %global myversion %{version}%{?rcversion:-%rcversion} Summary: Perl-compatible regular expression library -Group: System Environment/Libraries ## Source package only: # INSTALL: ??? # install-sh: MIT and Public Domain @@ -34,42 +33,8 @@ Source: ftp://ftp.csx.cam.ac.uk/pub/software/programming/%{name}/%{?rcversio Patch0: pcre-8.21-multilib.patch # Refused by upstream, bug #675477 Patch1: pcre-8.32-refused_spelling_terminated.patch -# Fix pcregrep multi-line matching --only-matching option, upstream bug #1848, -# in upstream after 8.40 -Patch2: pcre-8.40-Correct-fix-for-pcre2grep-multiline-with-only-matchi.patch -# Fix a crash in JIT compilation, CVE-2017-6004, upstream bug #2035, -# in upstream after 8.40 -Patch3: pcre-8.40-Fix-a-missing-else-in-the-JIT-compiler-reported-by-i.patch -# Fix a potenial buffer overflow in formatting a pcregrep error message, -# upstream bug #2037, in upstream after 8.40 -Patch4: pcre-8.40-Silent-a-GCC-7-warning-about-too-small-buffer-for-pr.patch -# Fix parsing comments between quantifiers, upstream bug #2019, -# in upstream after 8.40 -Patch5: pcre-8.40-Fix-recognition-of-style-comment-between-quantifier-.patch -# Fix a crash in pcretest when printing non-ASCII characters, -# upstream bug #2043, in upstream after 8.40 -Patch6: pcre-8.40-Check-character-256-for-isprint-in-pcretest.patch -# Fix a crash in pcretest when \O directive was supplied with too big number, -# upstream bug #2044, in upstream after 8.40 -Patch7: pcre-8.40-Make-pcretest-check-size-of-O-argument.patch -# Document pcretest input cannot contain binary zeroes, upstream bug #2045, -# in upstream after 8.40 -Patch8: pcre-8.40-Minor-doc-update.patch -# Fix 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, -# CVE-2017-7244 upstream bug #2052, in upstream after 8.40 -Patch9: pcre-8.40-Fix-Unicode-property-crash-for-32-bit-characters-gre.patch -# Fix DFA match for a possessively repeated character class, -# upstream bug #2086, in upstream after 8.40 -Patch10: pcre-8.40-Fix-DFA-match-handling-of-possessive-repeated-charac.patch -# Fix a buffer overflow in pcretest tool when copying a string in UTF-32 mode, -# in upstream after 8.40 -Patch11: pcre-8.40-Fix-typo-leading-to-possible-buffer-overflow-in-pcre.patch -# 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, upstream bug #2052, -# in upstream after 8.40 -Patch12: pcre-8.40-Fix-character-type-detection-when-32-bit-and-UCP-are.patch +# Fix JIT on ARM, in upstream after 8.41-RC1 +Patch2: pcre-8.41-RC1-JIT-compiler-update.patch BuildRequires: readline-devel BuildRequires: autoconf BuildRequires: automake @@ -95,7 +60,6 @@ encodings. Detailed change log is provided by %{name}-doc package. %package utf16 Summary: UTF-16 variant of PCRE -Group: Development/Libraries Conflicts: %{name}%{?_isa} < 8.38-12 %description utf16 @@ -104,7 +68,6 @@ Detailed change log is provided by %{name}-doc package. %package utf32 Summary: UTF-32 variant of PCRE -Group: Development/Libraries Conflicts: %{name}%{?_isa} < 8.38-12 %description utf32 @@ -113,7 +76,6 @@ Detailed change log is provided by %{name}-doc package. %package cpp Summary: C++ bindings for PCRE -Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} %description cpp @@ -122,7 +84,6 @@ Detailed change log is provided by %{name}-doc package. %package doc Summary: Change log for %{name} -Group: Documentation BuildArch: noarch %description doc @@ -130,7 +91,6 @@ These are large documentation files about PCRE. %package devel Summary: Development files for %{name} -Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-cpp%{?_isa} = %{version}-%{release} Requires: %{name}-utf16%{?_isa} = %{version}-%{release} @@ -141,7 +101,6 @@ Development files (Headers, libraries for dynamic linking, etc) for %{name}. %package static Summary: Static library for %{name} -Group: Development/Libraries Requires: %{name}-devel%{_isa} = %{version}-%{release} %description static @@ -149,7 +108,6 @@ Library for static linking for %{name}. %package tools Summary: Auxiliary utilities for %{name} -Group: Development/Tools Requires: %{name}%{_isa} = %{version}-%{release} %description tools @@ -161,16 +119,6 @@ Utilities demonstrating PCRE capabilities like pcregrep or pcretest. %patch0 -p1 %patch1 -p1 %patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 # Because of rpath patch libtoolize --copy --force autoreconf -vif @@ -192,8 +140,13 @@ done %else --enable-jit \ %endif - --enable-pcretest-libreadline --enable-utf --enable-unicode-properties \ - --enable-pcre8 --enable-pcre16 --enable-pcre32 + --enable-pcretest-libreadline \ + --enable-utf \ + --enable-unicode-properties \ + --enable-pcre8 \ + --enable-pcre16 \ + --enable-pcre32 \ + --disable-silent-rules make %{?_smp_mflags} %install @@ -267,6 +220,9 @@ make %{?_smp_mflags} check VERBOSE=yes %{_mandir}/man1/pcretest.* %changelog +* Wed Jun 14 2017 Petr Pisar - 8.41-0.1.RC1 +- 8.41 RC1 bump + * Fri Apr 21 2017 Petr Pisar - 8.40-7 - Fix a buffer overflow in pcretest tool when copying a string in UTF-32 mode - Fix CVE-2017-7186 in JIT mode (a crash when finding a Unicode property for diff --git a/sources b/sources index 0dc796f..32951bf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pcre-8.40.tar.bz2) = b4c27eafbdf33bd7a1384655b1936f4be3bc6745c072347eb26e988896c52664bd85ac42444da1be78b6e20f45b6c7e5921f5f20f5b0741b5bd3d9844e5bd4e2 +SHA512 (pcre-8.41-RC1.tar.bz2) = 5d29f96af022a6fa8c6ca484f3c6756838f745423030102612138ed252f5bd1185e7b9e361b465332150d24af0361961765d4f872aa56518a32f709e014c845a