8.41 RC1 bump

This commit is contained in:
Petr Písař 2017-06-14 09:27:09 +02:00
parent a82fb773cc
commit cc814f7bdb
15 changed files with 61 additions and 697 deletions

1
.gitignore vendored
View File

@ -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

View File

@ -1,54 +0,0 @@
From 686660568dde71f9a7f8791cbb8a77702b3ea820 Mon Sep 17 00:00:00 2001
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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

View File

@ -1,73 +0,0 @@
From dcee2708b5d37437fda9dbd07ccac6c9badd6892 Mon Sep 17 00:00:00 2001
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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ř <ppisar@redhat.com>
---
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

View File

@ -1,67 +0,0 @@
From 881b9580da401953f2a94b42cb9cc275b4719341 Mon Sep 17 00:00:00 2001
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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

View File

@ -1,72 +0,0 @@
From 8037f71d03b3cd8919248f38448a0a2d3715c18c Mon Sep 17 00:00:00 2001
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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

View File

@ -1,64 +0,0 @@
From ad21e1941bfe5d5c8d8474028139343f884bf28c Mon Sep 17 00:00:00 2001
From: zherczeg <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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 <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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ř <ppisar@redhat.com>
---
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

View File

@ -1,78 +0,0 @@
From 3b8f1ab07fb1744c57f5d04c872e81d8d669de87 Mon Sep 17 00:00:00 2001
From: zherczeg <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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ř <ppisar@redhat.com>
---
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

View File

@ -1,67 +0,0 @@
From 63f1aabcabdc7ace28c649657fe2a4f880a87c5a Mon Sep 17 00:00:00 2001
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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

View File

@ -1,36 +0,0 @@
From b2f1496a36e68565421bd21485605d6af2a5819f Mon Sep 17 00:00:00 2001
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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

View File

@ -1,37 +0,0 @@
From 312dd5d85714f73c247131b541405cf0bf24581b Mon Sep 17 00:00:00 2001
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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

View File

@ -1,39 +0,0 @@
From e7991eb5273b5b4162656f4b3d32e68a7430805a Mon Sep 17 00:00:00 2001
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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

View File

@ -1,50 +0,0 @@
From 875a7d84d6cc77431db27eeb140d9e94e4584e31 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
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ř <ppisar@redhat.com>
---
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

View File

@ -0,0 +1,44 @@
From 90f29ca7fd20f31bf05ba8f996944663b1e7c5ed Mon Sep 17 00:00:00 2001
From: zherczeg <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>
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ř <ppisar@redhat.com>
---
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

View File

@ -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 <ppisar@redhat.com> - 8.41-0.1.RC1
- 8.41 RC1 bump
* Fri Apr 21 2017 Petr Pisar <ppisar@redhat.com> - 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

View File

@ -1 +1 @@
SHA512 (pcre-8.40.tar.bz2) = b4c27eafbdf33bd7a1384655b1936f4be3bc6745c072347eb26e988896c52664bd85ac42444da1be78b6e20f45b6c7e5921f5f20f5b0741b5bd3d9844e5bd4e2
SHA512 (pcre-8.41-RC1.tar.bz2) = 5d29f96af022a6fa8c6ca484f3c6756838f745423030102612138ed252f5bd1185e7b9e361b465332150d24af0361961765d4f872aa56518a32f709e014c845a