From 9e744d9e9a0f37eb6346ab7551f9e6ad8e3a0848 Mon Sep 17 00:00:00 2001 From: ph10 Date: Tue, 13 Jun 2017 16:53:16 +0000 Subject: File tidies for 8.41-RC1 release. git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1703 2f5784b3-3f2a-0410-8824-cb99058d5e15 --- ChangeLog | 34 +++++++++++++++++----------------- NEWS | 6 ++++++ configure.ac | 10 +++++----- doc/html/pcrejit.html | 18 +++++++++++++----- doc/html/pcretest.html | 9 +++++++-- doc/pcre.txt | 14 +++++++++++--- doc/pcretest.1 | 2 +- doc/pcretest.txt | 8 ++++++-- maint/ManyConfigTests | 1 + pcre_compile.c | 4 ++-- pcre_internal.h | 4 ++-- pcregrep.c | 16 ++++++++-------- pcretest.c | 8 ++++---- 13 files changed, 83 insertions(+), 51 deletions(-) diff --git a/ChangeLog b/ChangeLog index faba427..5c3a381 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,50 +4,50 @@ ChangeLog for PCRE Note that the PCRE 8.xx series (PCRE1) is now in a bugfix-only state. All development is happening in the PCRE2 10.xx series. -Version 8.41 ------------- +Version 8.41 13-June-2017 +------------------------- -1. Fixed typo in CMakeLists.txt (wrong number of arguments for +1. Fixed typo in CMakeLists.txt (wrong number of arguments for PCRE_STATIC_RUNTIME (affects MSVC only). -2. Issue 1 for 8.40 below was not correctly fixed. If pcregrep in multiline -mode with --only-matching matched several lines, it restarted scanning at the -next line instead of moving on to the end of the matched string, which can be +2. Issue 1 for 8.40 below was not correctly fixed. If pcregrep in multiline +mode with --only-matching matched several lines, it restarted scanning at the +next line instead of moving on to the end of the matched string, which can be several lines after the start. 3. Fix a missing else in the JIT compiler reported by 'idaifish'. -4. A (?# style comment is now ignored between a basic quantifier and a +4. A (?# style comment is now ignored between a basic quantifier and a following '+' or '?' (example: /X+(?#comment)?Y/. -5. Avoid use of a potentially overflowing buffer in pcregrep (patch by Petr +5. Avoid use of a potentially overflowing buffer in pcregrep (patch by Petr Pisar). -6. Fuzzers have reported issues in pcretest. These are NOT serious (it is, -after all, just a test program). However, to stop the reports, some easy ones +6. Fuzzers have reported issues in pcretest. These are NOT serious (it is, +after all, just a test program). However, to stop the reports, some easy ones are fixed: (a) Check for values < 256 when calling isprint() in pcretest. - (b) Give an error for too big a number after \O. - -7. In the 32-bit library in non-UTF mode, an attempt to find a Unicode -property for a character with a code point greater than 0x10ffff (the Unicode + (b) Give an error for too big a number after \O. + +7. In the 32-bit library in non-UTF mode, an attempt to find a Unicode +property for a character with a code point greater than 0x10ffff (the Unicode maximum) caused a crash. 8. The alternative matching function, pcre_dfa_exec() misbehaved if it encountered a character class with a possessive repeat, for example [a-f]{3}+. -9. When pcretest called pcre_copy_substring() in 32-bit mode, it set the buffer +9. When pcretest called pcre_copy_substring() in 32-bit mode, it set the buffer length incorrectly, which could result in buffer overflow. 10. Remove redundant line of code (accidentally left in ages ago). -11. Applied C++ patch from Irfan Adilovic to guard 'using std::' directives +11. Applied C++ patch from Irfan Adilovic to guard 'using std::' directives with namespace pcrecpp (Bugzilla #2084). 12. Remove a duplication typo in pcre_tables.c. -13. Fix returned offsets from regexec() when REG_STARTEND is used with a +13. Fix returned offsets from regexec() when REG_STARTEND is used with a starting offset greater than zero. diff --git a/NEWS b/NEWS index b92c4f9..36be07c 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,12 @@ News about PCRE releases ------------------------ +Release 8.41 13-June-2017 +------------------------- + +This is a bug-fix release. + + Release 8.40 11-January-2017 ---------------------------- diff --git a/configure.ac b/configure.ac index 8f12eca..c67bea3 100644 --- a/configure.ac +++ b/configure.ac @@ -11,16 +11,16 @@ dnl be defined as -RC2, for example. For real releases, it should be empty. m4_define(pcre_major, [8]) m4_define(pcre_minor, [41]) m4_define(pcre_prerelease, [-RC1]) -m4_define(pcre_date, [2017-02-01]) +m4_define(pcre_date, [2017-06-13]) # NOTE: The CMakeLists.txt file searches for the above variables in the first # 50 lines of this file. Please update that if the variables above are moved. # Libtool shared library interface versions (current:revision:age) -m4_define(libpcre_version, [3:8:2]) -m4_define(libpcre16_version, [2:8:2]) -m4_define(libpcre32_version, [0:8:0]) -m4_define(libpcreposix_version, [0:4:0]) +m4_define(libpcre_version, [3:9:2]) +m4_define(libpcre16_version, [2:9:2]) +m4_define(libpcre32_version, [0:9:0]) +m4_define(libpcreposix_version, [0:5:0]) m4_define(libpcrecpp_version, [0:1:0]) AC_PREREQ(2.57) diff --git a/doc/html/pcrejit.html b/doc/html/pcrejit.html index 210f1da..193b8e5 100644 --- a/doc/html/pcrejit.html +++ b/doc/html/pcrejit.html @@ -79,9 +79,11 @@ API that is JIT-specific.

If your program may sometimes be linked with versions of PCRE that are older -than 8.20, but you want to use JIT when it is available, you can test -the values of PCRE_MAJOR and PCRE_MINOR, or the existence of a JIT macro such -as PCRE_CONFIG_JIT, for compile-time control of your code. +than 8.20, but you want to use JIT when it is available, you can test the +values of PCRE_MAJOR and PCRE_MINOR, or the existence of a JIT macro such as +PCRE_CONFIG_JIT, for compile-time control of your code. Also beware that the +pcre_jit_exec() function was not available before 8.32. See "JIT FAST +PATH API" section below for details.


SIMPLE USE OF JIT

@@ -428,6 +430,12 @@ fast path, and if invalid data is passed, the result is undefined. Bypassing the sanity checks and the pcre_exec() wrapping can give speedups of more than 10%.

+

+Note that the pcre_jit_exec() function is not available in versions of +PCRE before 8.32 (released in November 2012). If you need to support versions +that old you must either use the slower pcre_exec(), or switch between +the two codepaths by checking the values of PCRE_MAJOR and PCRE_MINOR. +


SEE ALSO

pcreapi(3) @@ -443,9 +451,9 @@ Cambridge CB2 3QH, England.


REVISION

-Last updated: 17 March 2013 +Last updated: 13 June 2017
-Copyright © 1997-2013 University of Cambridge. +Copyright © 1997-2017 University of Cambridge.

Return to the PCRE index page. diff --git a/doc/html/pcretest.html b/doc/html/pcretest.html index 839fabf..ba540d3 100644 --- a/doc/html/pcretest.html +++ b/doc/html/pcretest.html @@ -74,6 +74,11 @@ newline as data characters. However, in some Windows environments character 26 maximum portability, therefore, it is safest to use only ASCII characters in pcretest input files.

+

+The input is processed using using C's string functions, so must not +contain binary zeroes, even though in Unix-like environments, fgets() +treats any bytes other than newline as data characters. +


PCRE's 8-BIT, 16-BIT AND 32-BIT LIBRARIES

From release 8.30, two separate PCRE libraries can be built. The original one @@ -1149,9 +1154,9 @@ Cambridge CB2 3QH, England.


REVISION

-Last updated: 09 February 2014 +Last updated: 23 February 2017
-Copyright © 1997-2014 University of Cambridge. +Copyright © 1997-2017 University of Cambridge.

Return to the PCRE index page. diff --git a/doc/pcre.txt b/doc/pcre.txt index d68d503..3614724 100644 --- a/doc/pcre.txt +++ b/doc/pcre.txt @@ -8365,7 +8365,9 @@ AVAILABILITY OF JIT SUPPORT If your program may sometimes be linked with versions of PCRE that are older than 8.20, but you want to use JIT when it is available, you can test the values of PCRE_MAJOR and PCRE_MINOR, or the existence of a JIT - macro such as PCRE_CONFIG_JIT, for compile-time control of your code. + macro such as PCRE_CONFIG_JIT, for compile-time control of your code. + Also beware that the pcre_jit_exec() function was not available before + 8.32. See "JIT FAST PATH API" section below for details. SIMPLE USE OF JIT @@ -8696,6 +8698,12 @@ JIT FAST PATH API Bypassing the sanity checks and the pcre_exec() wrapping can give speedups of more than 10%. + Note that the pcre_jit_exec() function is not available in versions of + PCRE before 8.32 (released in November 2012). If you need to support + versions that old you must either use the slower pcre_exec(), or switch + between the two codepaths by checking the values of PCRE_MAJOR and + PCRE_MINOR. + SEE ALSO @@ -8711,8 +8719,8 @@ AUTHOR REVISION - Last updated: 17 March 2013 - Copyright (c) 1997-2013 University of Cambridge. + Last updated: 13 June 2017 + Copyright (c) 1997-2017 University of Cambridge. ------------------------------------------------------------------------------ diff --git a/doc/pcretest.1 b/doc/pcretest.1 index 1b89071..ea7457c 100644 --- a/doc/pcretest.1 +++ b/doc/pcretest.1 @@ -51,7 +51,7 @@ newline as data characters. However, in some Windows environments character 26 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 +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. . diff --git a/doc/pcretest.txt b/doc/pcretest.txt index 55de502..6d7305c 100644 --- a/doc/pcretest.txt +++ b/doc/pcretest.txt @@ -39,6 +39,10 @@ INPUT DATA FORMAT For maximum portability, therefore, it is safest to use only ASCII characters in pcretest input files. + The input is processed using using C's string functions, so must not + contain binary zeroes, even though in Unix-like environments, fgets() + treats any bytes other than newline as data characters. + PCRE's 8-BIT, 16-BIT AND 32-BIT LIBRARIES @@ -1083,5 +1087,5 @@ AUTHOR REVISION - Last updated: 09 February 2014 - Copyright (c) 1997-2014 University of Cambridge. + Last updated: 23 February 2017 + Copyright (c) 1997-2017 University of Cambridge. diff --git a/maint/ManyConfigTests b/maint/ManyConfigTests index bc5e71b..267739d 100755 --- a/maint/ManyConfigTests +++ b/maint/ManyConfigTests @@ -38,6 +38,7 @@ cc --version >zzz 2>/dev/null if [ $? -eq 0 ] && grep GCC zzz >/dev/null; then ISGCC="yes" CFLAGS="$CFLAGS -Wall" + CFLAGS="$CFLAGS -Wno-implicit-fallthrough" CFLAGS="$CFLAGS -Wno-overlength-strings" CFLAGS="$CFLAGS -Wpointer-arith" CFLAGS="$CFLAGS -Wwrite-strings" diff --git a/pcre_compile.c b/pcre_compile.c index 85df41a..42f204c 100644 --- a/pcre_compile.c +++ b/pcre_compile.c @@ -5739,9 +5739,9 @@ for (;; ptr++) ptr = p - 1; /* Character before the next significant one. */ } - /* We also need to skip over (?# comments, which are not dependent on + /* 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) { diff --git a/pcre_internal.h b/pcre_internal.h index 154d3f6..97ff55d 100644 --- a/pcre_internal.h +++ b/pcre_internal.h @@ -2786,12 +2786,12 @@ extern const int PRIV(ucp_typerange)[]; #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 +#endif #define UCD_CHARTYPE(ch) GET_UCD(ch)->chartype #define UCD_SCRIPT(ch) GET_UCD(ch)->script diff --git a/pcregrep.c b/pcregrep.c index 87a3c2e..317f745 100644 --- a/pcregrep.c +++ b/pcregrep.c @@ -1816,18 +1816,18 @@ while (ptr < endptr) /* 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. */ - + before searching for more matches. */ + while (startoffset > (int)linelength) - { - matchptr = ptr += linelength + endlinelength; - filepos += (int)(linelength + endlinelength); - linenumber++; + { + 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); - } + length = (size_t)(endptr - ptr); + } goto ONLY_MATCHING_RESTART; } diff --git a/pcretest.c b/pcretest.c index 26578e1..f130303 100644 --- a/pcretest.c +++ b/pcretest.c @@ -4834,16 +4834,16 @@ while (!done) continue; case 'O': - while(isdigit(*p)) + while(isdigit(*p)) { if (n > (INT_MAX-10)/10) /* Hack to stop fuzzers */ { printf("** \\O argument is too big\n"); yield = 1; - goto EXIT; - } + goto EXIT; + } n = n * 10 + *p++ - '0'; - } + } if (n > size_offsets_max) { size_offsets_max = n; -- cgit v1.2.1