The NetBSD Project

CVS log for pkgsrc/devel/pcre2/Makefile

[BACK] Up to [cvs.NetBSD.org] / pkgsrc / devel / pcre2

Request diff between arbitrary revisions


Keyword substitution: kv
Default branch: MAIN


Revision 1.30: download - view: text, markup, annotated - select for diffs
Wed Feb 5 16:11:51 2025 UTC (6 weeks, 5 days ago) by adam
Branches: MAIN
CVS tags: HEAD
Diff to: previous 1.29: preferred, colored
Changes since revision 1.29: +2 -2 lines
pcre2: updated to 10.45

Version 10.45 05-February-2025
------------------------------

This is a comparatively large release, incorporating new features, some
bugfixes, and a few changes with slight backwards compatibility implications.
Please see the ChangeLog and Git log for further details.

Only changes to behaviour, changes to the API, and major changes to the pattern
syntax are described here.

This release is the first to be available as a (signed) Git tag, or
alternatively as a (signed) tarball of the Git tag.

This is also the first release to be made by the new maintainers of PCRE2, and
we would like to thank Philip Hazel, creator and maintainer of PCRE and PCRE2.

* (Git change) The sljit project has been split out into a separate Git
  repository. Git users must now run `git submodule init; git submodule update`
  after a Git checkout.

* (Behaviour change) Update Unicode support to UCD 16.

* (Match behaviour change) Case-insensitive matching of Unicode properties
  Ll, Lt, and Lu has been changed to match Perl. Previously, /\p{Ll}/i would
  match only lower-case characters (even though case-insensitive matching was
  specified). This also affects case-insensitive matching of POSIX classes such
  as [:lower:].

* (Minor match behaviour change) Case-insensitive matching of backreferences now
  respects the PCRE2_EXTRA_CASELESS_RESTRICT option.

* (Minor pattern syntax change) Parsing of the \x escape is stricter, and is
  no longer parsed as an escape for the NUL character if not followed by '{' or
  a hexadecimal digit. Use \x00 instead.

* (Major new feature) Add a new feature called scan substring. This is a new
  type of assertion which matches the content of a capturing block to a
  sub-pattern.

  Example: to find a word that contains the rare (in English) sequence of
  letters "rh" not at the start:

      \b(\w++)(*scan_substring:(1).+rh)

  The first group captures a word which is then scanned by the
  (*scan_substring:(1) ... ) assertion, which tests whether the pattern ".+rh"
  matches the capture group "(1)".

* (Major new feature) Add support for UTS#18 compatible character classes,
  using the new option PCRE2_ALT_EXTENDED_CLASS. This adds '[' as a
  metacharacter within character classes and the operators '&&', '--' and '~~',
  allowing subtractions and intersections of character classes to be easily
  expressed.

  Example: to match Thai or Greek letters (but not letters or other characters
  in those scripts), use [\p{L}&&[\p{Thai}||\p{Greek}]].

* (Major new feature) Add support for Perl-style extended character classes,
  using the syntax (?[...]). This also allows expressing subtractions and
  intersections of character classes, but using a different syntax to UTS#18.

  Example: to match Thai or Greek letters (but not letters or other characters
  in those scripts), use (?[\p{L} & (\p{Thai} + \p{Greek})]).

* (Minor feature) Significant improvements to the character class match engine.
  Compiled character classes are now more compact, and have faster matching
  for large or complex character sets, using binary search through the set.

* JIT compilation now fails with the new error code PCRE2_ERROR_JIT_UNSUPPORTED
  for patterns which use features not supported by the JIT compiler.

* (Minor feature) New options PCRE2_EXTRA_NO_BS0 (disallow \0 as an escape for
  the NUL character); PCRE2_EXTRA_PYTHON_OCTAL (use Python disambiguation rules
  for deciding whether \12 is a backreference or an octal escape);
  PCRE2_EXTRA_NEVER_CALLOUT (disable callout syntax entirely);
  PCRE2_EXTRA_TURKISH_CASING (use Turkish rules for case-insensitive matching).

* (Minor feature) Add new API function pcre2_set_optimize() for controlling
  which optimizations are enabled.

* (Minor new features) A variety of extensions have been made to
  pcre2_substitute() and its syntax for replacement strings. These now support:
  \123 octal escapes; titlecasing \u\L; \1 backreferences; \g<1> and $<NAME>
  backreferences; $& $` $' and $_; new function
  pcre2_set_substitute_case_callout() to allow locale-aware case transformation.

Revision 1.29: download - view: text, markup, annotated - select for diffs
Fri Jun 7 20:35:50 2024 UTC (9 months, 2 weeks ago) by adam
Branches: MAIN
CVS tags: pkgsrc-2024Q4-base, pkgsrc-2024Q4, pkgsrc-2024Q3-base, pkgsrc-2024Q3, pkgsrc-2024Q2-base, pkgsrc-2024Q2
Diff to: previous 1.28: preferred, colored
Changes since revision 1.28: +2 -2 lines
pcre2: updated to 10.44

PCRE2-10.44
This is mostly a bug-fix and tidy-up release. An explicit limit can now be set on the size of a compiled pattern.

Revision 1.28: download - view: text, markup, annotated - select for diffs
Fri Feb 16 17:51:22 2024 UTC (13 months ago) by adam
Branches: MAIN
CVS tags: pkgsrc-2024Q1-base, pkgsrc-2024Q1
Diff to: previous 1.27: preferred, colored
Changes since revision 1.27: +2 -2 lines
pcre2: updated to 10.43

PCRE2-10.43

There are a lot of changes in this release. Those that are not just bugfixes or source tidies are described in the NEWS file and there is more information in ChangeLog. Note that JIT support for Armv5 is withdrawn in this release. There have only been minor changes since 10.43-RC1.

Revision 1.27: download - view: text, markup, annotated - select for diffs
Tue Dec 13 07:21:49 2022 UTC (2 years, 3 months ago) by adam
Branches: MAIN
CVS tags: pkgsrc-2023Q4-base, pkgsrc-2023Q4, pkgsrc-2023Q3-base, pkgsrc-2023Q3, pkgsrc-2023Q2-base, pkgsrc-2023Q2, pkgsrc-2023Q1-base, pkgsrc-2023Q1, pkgsrc-2022Q4-base, pkgsrc-2022Q4
Diff to: previous 1.26: preferred, colored
Changes since revision 1.26: +2 -3 lines
pcre2: updated to 10.42

Version 10.42 11-December-2022
------------------------------

1. Change 19 of 10.41 wasn't quite right; it put the definition of a default,
empty value for PCRE2_CALL_CONVENTION in src/pcre2posix.c instead of
src/pcre2posix.h, which meant that programs that included pcre2posix.h but not
pcre2.h failed to compile.

2. To catch similar issues to the above in future, a new small test program
that includes pcre2posix.h but not pcre2.h has been added to the test suite.

3. When the -S option of pcre2test was used to set a stack size greater than
the allowed maximum, the error message displayed the hard limit incorrectly.
This was pointed out on GitHub pull request 171, but the suggested patch
didn't cope with all cases. Some further modification was required.

4. Supplying an ovector count of more than 65535 to pcre2_match_data_create()
caused a crash because the field in the match data block is only 16 bits. A
maximum of 65535 is now silently applied.

5. Merged @carenas patch 175 which fixes 86 - segfault on aarch64 (ARM),

Revision 1.26: download - view: text, markup, annotated - select for diffs
Thu Dec 8 10:30:48 2022 UTC (2 years, 3 months ago) by adam
Branches: MAIN
Diff to: previous 1.25: preferred, colored
Changes since revision 1.25: +2 -1 lines
pcre2: fix for https://github.com/PCRE2Project/pcre2/issues/173

Revision 1.25: download - view: text, markup, annotated - select for diffs
Tue Dec 6 20:46:24 2022 UTC (2 years, 3 months ago) by adam
Branches: MAIN
Diff to: previous 1.24: preferred, colored
Changes since revision 1.24: +2 -3 lines
pcre2: updated to 2.10.41

PCRE2-10.41
Mainly bug fixes and tidies; pcre2grep has been made more like GNU grep for multiple patterns that match more than once on a line.

Revision 1.24: download - view: text, markup, annotated - select for diffs
Wed Sep 14 09:35:01 2022 UTC (2 years, 6 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2022Q3-base, pkgsrc-2022Q3
Diff to: previous 1.23: preferred, colored
Changes since revision 1.23: +2 -1 lines
pcre2: disable JIT by default on NetBSD

See
https://mail-index.netbsd.org/pkgsrc-users/2022/09/11/msg036184.html
for more details.

Bump PKGREVISION.

Revision 1.23: download - view: text, markup, annotated - select for diffs
Wed Apr 20 20:14:48 2022 UTC (2 years, 11 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2022Q2-base, pkgsrc-2022Q2
Diff to: previous 1.22: preferred, colored
Changes since revision 1.22: +2 -2 lines
pcre2: update to 10.40.

Version 10.40 15-April-2022
---------------------------

This is mostly a bug-fixing and code-tidying release. However, there are some
extensions to Unicode property handling:

* Added support for Bidi_Class and a number of binary Unicode properties,
including Bidi_Control.

* A number of changes to script matching for \p and \P:

  (a) Script extensions for a character are now coded as a bitmap instead of
      a list of script numbers, which should be faster and does not need a
      loop.

  (b) Added the syntax \p{script:xxx} and \p{script_extensions:xxx} (synonyms
      sc and scx).

  (c) Changed \p{scriptname} from being the same as \p{sc:scriptname} to being
      the same as \p{scx:scriptname} because this change happened in Perl at
      release 5.26.

  (d) The standard Unicode 4-letter abbreviations for script names are now
      recognized.

  (e) In accordance with Unicode and Perl's "loose matching" rules, spaces,
      hyphens, and underscores are ignored in property names, which are then
      matched independent of case.

Revision 1.22: download - view: text, markup, annotated - select for diffs
Mon Nov 1 10:06:14 2021 UTC (3 years, 4 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2022Q1-base, pkgsrc-2022Q1, pkgsrc-2021Q4-base, pkgsrc-2021Q4
Diff to: previous 1.21: preferred, colored
Changes since revision 1.21: +2 -2 lines
pcre2: update to 10.39.

Version 10.39 29-October-2021
-----------------------------

This release is happening soon after 10.38 because the bug fix is important.

1. Fix incorrect detection of alternatives in first character search in JIT.

2. Update to Unicode 14.0.0.

3. Some code cleanups (see ChangeLog).

Revision 1.21: download - view: text, markup, annotated - select for diffs
Mon Oct 18 11:53:10 2021 UTC (3 years, 5 months ago) by nia
Branches: MAIN
Diff to: previous 1.20: preferred, colored
Changes since revision 1.20: +4 -4 lines
pcre2: update to 10.38

Version 10.38 01-October-2021
-----------------------------

As well as some bug fixes and tidies (as always, see ChangeLog for details),
the documentation is updated to list the new URLs, following the move of the
source repository to GitHub and the mailing list to Google Groups.

* The CMake build system can now build both static and shared libraries in one
go.

* Following Perl's lead, \K is now locked out in lookaround assertions by
default, but an option is provided to re-enable the previous behaviour.

Revision 1.20: download - view: text, markup, annotated - select for diffs
Mon May 31 11:13:04 2021 UTC (3 years, 9 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2021Q3-base, pkgsrc-2021Q3, pkgsrc-2021Q2-base, pkgsrc-2021Q2
Diff to: previous 1.19: preferred, colored
Changes since revision 1.19: +2 -2 lines
pcre2: update to 10.37.

Version 10.37 26-May-2021
-------------------------

A few more bug fixes and tidies. The only change of real note is the removal of
the actual POSIX names regcomp etc. from the POSIX wrapper library because
these have caused issues for some applications (see 10.33 #2 below).

Revision 1.19: download - view: text, markup, annotated - select for diffs
Sun Dec 6 10:37:03 2020 UTC (4 years, 3 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2021Q1-base, pkgsrc-2021Q1, pkgsrc-2020Q4-base, pkgsrc-2020Q4
Diff to: previous 1.18: preferred, colored
Changes since revision 1.18: +2 -3 lines
pcre2: update to 10.36.

Version 10.36 04-December-2020
------------------------------

Again, mainly bug fixes and tidies. The only enhancements are the addition of
GNU grep's -m (aka --max-count) option to pcre2grep, and also unifying the
handling of substitution strings for both -O and callouts in pcre2grep, with
the addition of $x{...} and $o{...} to allow for characters whose code points
are greater than 255 in Unicode mode.

NOTE: there is an outstanding issue with JIT support for MacOS on arm64
hardware. For details, please see Bugzilla issue #2618.

Revision 1.18: download - view: text, markup, annotated - select for diffs
Thu May 28 07:53:05 2020 UTC (4 years, 9 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2020Q3-base, pkgsrc-2020Q3, pkgsrc-2020Q2-base, pkgsrc-2020Q2
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +2 -1 lines
pcre2: update to 10.35nb1.

Fix cleanup alloc_chunk() in sljitProtExec for NetBSD using upstream
patch.

Revision 1.17: download - view: text, markup, annotated - select for diffs
Tue May 19 14:18:49 2020 UTC (4 years, 10 months ago) by nia
Branches: MAIN
Diff to: previous 1.16: preferred, colored
Changes since revision 1.16: +3 -5 lines
pcre2: Update to 10.35

Version 10.35 09-May-2020
---------------------------

1. Use PCRE2_MATCH_EMPTY flag to detect empty matches in JIT.

2. Fix ARMv5 JIT improper handling of labels right after a constant pool.

3. A JIT bug is fixed which allowed to read the fields of the compiled
pattern before its existence is checked.

4. Back in the PCRE1 day, capturing groups that contained recursive back
references to themselves were made atomic (version 8.01, change 18) because
after the end a repeated group, the captured substrings had their values from
the final repetition, not from an earlier repetition that might be the
destination of a backtrack. This feature was documented, and was carried over
into PCRE2. However, it has now been realized that the major refactoring that
was done for 10.30 has made this atomicizing unnecessary, and it is confusing
when users are unaware of it, making some patterns appear not to be working as
expected. Capture values of recursive back references in repeated groups are
now correctly backtracked, so this unnecessary restriction has been removed.

5. Added PCRE2_SUBSTITUTE_LITERAL.

6. Avoid some VS compiler warnings.

7. Added PCRE2_SUBSTITUTE_MATCHED.

8. Added (?* and (?<* as synonms for (*napla: and (*naplb: to match another
regex engine. The Perl regex folks are aware of this usage and have made a note
about it.

9. When an assertion is repeated, PCRE2 used to limit the maximum repetition to
1, believing that repeating an assertion is pointless. However, if a positive
assertion contains capturing groups, repetition can be useful. In any case, an
assertion could always be wrapped in a repeated group. The only restriction
that is now imposed is that an unlimited maximum is changed to one more than
the minimum.

10. Fix *THEN verbs in lookahead assertions in JIT.

11. Added PCRE2_SUBSTITUTE_REPLACEMENT_ONLY.

12. The JIT stack should be freed when the low-level stack allocation fails.

13. In pcre2grep, if the final line in a scanned file is output but does not
end with a newline sequence, add a newline according to the --newline setting.

14. (?(DEFINE)...) groups were not being handled correctly when checking for
the fixed length of a lookbehind assertion. Such a group within a lookbehind
should be skipped, as it does not contribute to the length of the group.
Instead, the (DEFINE) group was being processed, and if at the end of the
lookbehind, that end was not correctly recognized. Errors such as "lookbehind
assertion is not fixed length" and also "internal error: bad code value in
parsed_skip()" could result.

15. Put a limit of 1000 on recursive calls in pcre2_study() when searching
nested groups for starting code units, in order to avoid stack overflow issues.
If the limit is reached, it just gives up trying for this optimization.

16. The control verb chain list must always be restored when exiting from a
recurse function in JIT.

17. Fix a crash which occurs when the character type of an invalid UTF
character is decoded in JIT.

18. Changes in many areas of the code so that when Unicode is supported and
PCRE2_UCP is set without PCRE2_UTF, Unicode character properties are used for
upper/lower case computations on characters whose code points are greater than
127.

19. The function for checking UTF-16 validity was returning an incorrect offset
for the start of the error when a high surrogate was not followed by a valid
low surrogate. This caused incorrect behaviour, for example when
PCRE2_MATCH_INVALID_UTF was set and a match started immediately following the
invalid high surrogate, such as /aa/ matching "\x{d800}aa".

20. If a DEFINE group immediately preceded a lookbehind assertion, the pattern
could be mis-compiled and therefore not match correctly. This is the example
that found this: /(?(DEFINE)(?<foo>bar))(?<![-a-z0-9])word/ which failed to
match "word" because the "move back" value was set to zero.

21. Following a request from a user, some extensions and tidies to the
character tables handling have been done:

  (a) The dftables auxiliary program is renamed pcre2_dftables, but it is still
  not installed for public use.

  (b) There is now a -b option for pcre2_dftables, which causes the tables to
  be written in binary. There is also a -help option.

  (c) PCRE2_CONFIG_TABLES_LENGTH is added to pcre2_config() so that an
  application that wants to save tables in binary knows how long they are.

22. Changed setting of CMAKE_MODULE_PATH in CMakeLists.txt from SET to
LIST(APPEND...) to allow a setting from the command line to be included.

23. Updated to Unicode 13.0.0.

24. CMake build now checks for secure_getenv() and strerror(). Patch by Carlo.

25. Avoid using [-1] as a suffix in pcre2test because it can provoke a compiler
warning.

26. Added tests for __attribute__((uninitialized)) to both the configure and
CMake build files, and then applied this attribute to the variable called
stack_frames_vector[] in pcre2_match(). When implemented, this disables
automatic initialization (a facility in clang), which can take time on big
variables.

27. Updated CMakeLists.txt (patches by Uwe Korn) to add support for
pcre2-config, the libpcre*.pc files, SOVERSION, VERSION and the
MACHO_*_VERSIONS settings for CMake builds.

28. Another patch to CMakeLists.txt to check for mkostemp (configure already
does). Patch by Carlo Marcelo Arenas Belon.

29. Check for the existence of memfd_create in both CMake and configure
configurations. Patch by Carlo Marcelo Arenas Belon.

30. Restrict the configuration setting for the SELinux compatible execmem
allocator (change 10.30/44) to Linux and NetBSD.

Revision 1.16: download - view: text, markup, annotated - select for diffs
Sun Jan 26 17:31:02 2020 UTC (5 years, 1 month ago) by rillig
Branches: MAIN
CVS tags: pkgsrc-2020Q1-base, pkgsrc-2020Q1
Diff to: previous 1.15: preferred, colored
Changes since revision 1.15: +2 -2 lines
all: migrate homepages from http to https

pkglint -r --network --only "migrate"

As a side-effect of migrating the homepages, pkglint also fixed a few
indentations in unrelated lines. These and the new homepages have been
checked manually.

Revision 1.15: download - view: text, markup, annotated - select for diffs
Tue Nov 26 10:17:55 2019 UTC (5 years, 3 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2019Q4-base, pkgsrc-2019Q4
Diff to: previous 1.14: preferred, colored
Changes since revision 1.14: +6 -5 lines
pcre2: update to 10.34.

Version 10.34 21-November-2019
------------------------------

Another release with a few enhancements as well as bugfixes and tidies. The
main new features are:

1. There is now some support for matching in invalid UTF strings.

2. Non-atomic positive lookarounds are implemented in the pcre2_match()
interpreter, but not in JIT.

3. Added two new functions: pcre2_get_match_data_size() and
pcre2_maketables_free().

4. Upgraded to Unicode 12.1.0.

Revision 1.14: download - view: text, markup, annotated - select for diffs
Tue Sep 17 10:56:03 2019 UTC (5 years, 6 months ago) by nros
Branches: MAIN
CVS tags: pkgsrc-2019Q3-base, pkgsrc-2019Q3
Diff to: previous 1.13: preferred, colored
Changes since revision 1.13: +2 -2 lines
Remove unused master site from pcre packages

ftp.csx.cam.ac.uk doesn't seem to be up
and it is not listed as a mirror on
www.pcre.org anymore.

Revision 1.13: download - view: text, markup, annotated - select for diffs
Sat Apr 27 18:33:12 2019 UTC (5 years, 10 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2019Q2-base, pkgsrc-2019Q2
Diff to: previous 1.12: preferred, colored
Changes since revision 1.12: +2 -2 lines
pcre2: update to 10.33.

Version 10.33-RC1 16-April-2019
-------------------------------

Yet more bugfixes, tidies, and a few enhancements, summarized here (see
ChangeLog for the full list):

1. Callouts from pcre2_substitute() are now available.

2. The POSIX functions are now all called pcre2_regcomp() etc., with wrapper
functions that use the standard POSIX names. However, in pcre2posix.h the POSIX
names are defined as macros. This should help avoid linking with the wrong
library in some environments, while still exporting the POSIX names for
pre-existing programs that use them.

3. Some new options:

   (a) PCRE2_EXTRA_ESCAPED_CR_IS_LF makes \r behave as \n.

   (b) PCRE2_EXTRA_ALT_BSUX enables support for ECMAScript 6's \u{hh...}
       construct.

   (c) PCRE2_COPY_MATCHED_SUBJECT causes a copy of a matched subject to be
       made, instead of just remembering a pointer.

4. Some new Perl features:

   (a) Perl 5.28's experimental alphabetic names for atomic groups and
       lookaround assertions, for example, (*pla:...) and (*atomic:...).

   (b) The new Perl "script run" features (*script_run:...) and
       (*atomic_script_run:...) aka (*sr:...) and (*asr:...).

   (c) When PCRE2_UTF is set, allow non-ASCII letters and decimal digits in
       capture group names.

5. --disable-percent-zt disables the use of %zu and %td in formatting strings
in pcre2test. They were already automatically disabled for VC and older C
compilers.

6. Some changes related to callouts in pcre2grep:

   (a) Support for running an external program under VMS has been added, in
       addition to Windows and fork() support.

   (b) --disable-pcre2grep-callout-fork restricts the callout support in
       to the inbuilt echo facility.

Revision 1.12: download - view: text, markup, annotated - select for diffs
Sun Dec 2 07:45:03 2018 UTC (6 years, 3 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2019Q1-base, pkgsrc-2019Q1, pkgsrc-2018Q4-base, pkgsrc-2018Q4
Diff to: previous 1.11: preferred, colored
Changes since revision 1.11: +5 -2 lines
pcre2: update to 10.32.

Version 10.32 10-September-2018
-------------------------------

This is another mainly bugfix and tidying release with a few minor
enhancements. These are the main ones:

1. pcre2grep now supports the inclusion of binary zeros in patterns that are
read from files via the -f option.

2. ./configure now supports --enable-jit=auto, which automatically enables JIT
if the hardware supports it.

3. In pcre2_dfa_match(), internal recursive calls no longer use the stack for
local workspace and local ovectors. Instead, an initial block of stack is
reserved, but if this is insufficient, heap memory is used. The heap limit
parameter now applies to pcre2_dfa_match().

4. Updated to Unicode version 11.0.0.

5. (*ACCEPT:ARG), (*FAIL:ARG), and (*COMMIT:ARG) are now supported.

6. Added support for \N{U+dddd}, but only in Unicode mode.

7. Added support for (?^) to unset all imnsx options.

Revision 1.11: download - view: text, markup, annotated - select for diffs
Tue Apr 17 08:56:06 2018 UTC (6 years, 11 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2018Q3-base, pkgsrc-2018Q3, pkgsrc-2018Q2-base, pkgsrc-2018Q2
Diff to: previous 1.10: preferred, colored
Changes since revision 1.10: +2 -3 lines
pcre2: update to 10.31.

Version 10.31 12-February-2018
------------------------------

This is mainly a bugfix and tidying release (see ChangeLog for full details).
However, there are some minor enhancements.

1. New pcre2_config() options: PCRE2_CONFIG_NEVER_BACKSLASH_C and
PCRE2_CONFIG_COMPILED_WIDTHS.

2. New pcre2_pattern_info() option PCRE2_INFO_EXTRAOPTIONS to retrieve the
extra compile time options.

3. There are now public names for all the pcre2_compile() error numbers.

4. Added PCRE2_CALLOUT_STARTMATCH and PCRE2_CALLOUT_BACKTRACK bits to a new
field callout_flags in callout blocks.

Revision 1.10: download - view: text, markup, annotated - select for diffs
Thu Sep 7 13:47:21 2017 UTC (7 years, 6 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2018Q1-base, pkgsrc-2018Q1, pkgsrc-2017Q4-base, pkgsrc-2017Q4, pkgsrc-2017Q3-base, pkgsrc-2017Q3
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +3 -3 lines
Make JIT an option. Enable it by default on the list of platforms
martin@ extracted from the source, see PR 52524.

The pattern matching and/or the list itself may need further fixes.

Retest on NetBSD 8 shows that the binaries are now mprotect-safe,
remove variable.

Bump PKGREVISION.

Revision 1.9: download - view: text, markup, annotated - select for diffs
Thu Aug 17 19:53:54 2017 UTC (7 years, 7 months ago) by nros
Branches: MAIN
Diff to: previous 1.8: preferred, colored
Changes since revision 1.8: +3 -2 lines
Update pcre2 to version 10.30.

Fixes CVE-2017-8399.
Fixes CVE-2017-7186.
Fixes CVE-2017-8786.

Change Log for PCRE2
--------------------

Version 10.30 14-August-2017

Revision 1.8: download - view: text, markup, annotated - select for diffs
Mon Feb 20 09:44:34 2017 UTC (8 years, 1 month ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2017Q2-base, pkgsrc-2017Q2, pkgsrc-2017Q1-base, pkgsrc-2017Q1
Diff to: previous 1.7: preferred, colored
Changes since revision 1.7: +2 -3 lines
Updated pcre2 to 10.23.

Version 10.23 14-February-2017
------------------------------

1. ChangeLog has the details of a lot of bug fixes and tidies.

2. There has been a major re-factoring of the pcre2_compile.c file. Most syntax
checking is now done in the pre-pass that identifies capturing groups. This has
reduced the amount of duplication and made the code tidier. While doing this,
some minor bugs and Perl incompatibilities were fixed (see ChangeLog for
details.)

3. Back references are now permitted in lookbehind assertions when there are
no duplicated group numbers (that is, (?| has not been used), and, if the
reference is by name, there is only one group of that name. The referenced
group must, of course be of fixed length.

4. \g{+<number>} (e.g. \g{+2} ) is now supported. It is a "forward back
reference" and can be useful in repetitions (compare \g{-<number>} ). Perl does
not recognize this syntax.

5. pcre2grep now automatically expands its buffer up to a maximum set by
--max-buffer-size.

6. The -t option (grand total) has been added to pcre2grep.

7. A new function called pcre2_code_copy_with_tables() exists to copy a
compiled pattern along with a private copy of the character tables that is
uses.

8. A user supplied a number of patches to upgrade pcre2grep under Windows and
tidy the code.

9. Several updates have been made to pcre2test and test scripts (see
ChangeLog).

Revision 1.7: download - view: text, markup, annotated - select for diffs
Thu Jan 19 18:52:07 2017 UTC (8 years, 2 months ago) by agc
Branches: MAIN
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +3 -3 lines
Convert all occurrences (353 by my count) of

	MASTER_SITES= 	site1 \
			site2

style continuation lines to be simple repeated

	MASTER_SITES+= site1
	MASTER_SITES+= site2

lines. As previewed on tech-pkg. With thanks to rillig for fixing pkglint
accordingly.

Revision 1.6: download - view: text, markup, annotated - select for diffs
Sat Oct 1 10:21:03 2016 UTC (8 years, 5 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2016Q4-base, pkgsrc-2016Q4
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +5 -1 lines
Enable JIT. Bump PKGREVISION.

Revision 1.4.4.1: download - view: text, markup, annotated - select for diffs
Sun Sep 18 16:17:55 2016 UTC (8 years, 6 months ago) by spz
Branches: pkgsrc-2016Q2
Diff to: previous 1.4: preferred, colored; next MAIN 1.5: preferred, colored
Changes since revision 1.4: +2 -2 lines
Pullup ticket #5102 - requested by bsiegert
devel/pcre2: security update

Revisions pulled up:
- devel/pcre2/Makefile                                          1.5
- devel/pcre2/PLIST                                             1.5
- devel/pcre2/distinfo                                          1.5

-------------------------------------------------------------------
   Module Name:    pkgsrc
   Committed By:   mef
   Date:           Sun Sep 11 14:39:27 UTC 2016

   Modified Files:
           pkgsrc/devel/pcre2: Makefile PLIST distinfo

   Log Message:
   Updated devel/pcre to 10.22
   ---------------------------
   Version 10.22 29-July-2016
   --------------------------
   1. ChangeLog has the details of a number of bug fixes.

   2. The POSIX wrapper function regcomp() did not used to support back references
   and subroutine calls if called with the REG_NOSUB option. It now does.

   3. A new function, pcre2_code_copy(), is added, to make a copy of a compiled
   pattern.

   4. Support for string callouts is added to pcre2grep.

   5. Added the PCRE2_NO_JIT option to pcre2_match().

   6. The pcre2_get_error_message() function now returns with a negative error
   code if the error number it is given is unknown.

   7. Several updates have been made to pcre2test and test scripts (see
   ChangeLog).


   To generate a diff of this commit:
   cvs rdiff -u -r1.4 -r1.5 pkgsrc/devel/pcre2/Makefile pkgsrc/devel/pcre2/PLIST \
       pkgsrc/devel/pcre2/distinfo

Revision 1.5: download - view: text, markup, annotated - select for diffs
Sun Sep 11 14:39:27 2016 UTC (8 years, 6 months ago) by mef
Branches: MAIN
CVS tags: pkgsrc-2016Q3-base, pkgsrc-2016Q3
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +2 -2 lines
Updated devel/pcre to 10.22
---------------------------
Version 10.22 29-July-2016
--------------------------
1. ChangeLog has the details of a number of bug fixes.

2. The POSIX wrapper function regcomp() did not used to support back references
and subroutine calls if called with the REG_NOSUB option. It now does.

3. A new function, pcre2_code_copy(), is added, to make a copy of a compiled
pattern.

4. Support for string callouts is added to pcre2grep.

5. Added the PCRE2_NO_JIT option to pcre2_match().

6. The pcre2_get_error_message() function now returns with a negative error
code if the error number it is given is unknown.

7. Several updates have been made to pcre2test and test scripts (see
ChangeLog).

Revision 1.1.6.1: download - view: text, markup, annotated - select for diffs
Sun Jan 17 21:11:53 2016 UTC (9 years, 2 months ago) by spz
Branches: pkgsrc-2015Q4
Diff to: previous 1.1: preferred, colored; next MAIN 1.2: preferred, colored
Changes since revision 1.1: +2 -2 lines
Pullup ticket #4878 - requested by bsiegert
devel/pcre2: security update

Revisions pulled up:
- devel/pcre2/Makefile                                          1.2
- devel/pcre2/PLIST                                             1.2
- devel/pcre2/buildlink3.mk                                     1.2
- devel/pcre2/distinfo                                          1.3

-------------------------------------------------------------------
   Module Name:    pkgsrc
   Committed By:   bsiegert
   Date:           Tue Dec 29 14:40:20 UTC 2015

   Modified Files:
           pkgsrc/devel/pcre2: Makefile PLIST buildlink3.mk distinfo

   Log Message:
   Update pcre2 to 10.20. Fix CVE-2015-8381.

   Version 10.20 30-June-2015
   --------------------------

   1. Callouts with string arguments have been added.

   2. Assertion code generator in JIT has been optimized.

   3. The invalid pattern (?(?C) has a missing assertion condition at the end. The
   pcre2_compile() function read past the end of the input before diagnosing an
   error. This bug was discovered by the LLVM fuzzer.

   4. Implemented pcre2_callout_enumerate().

   5. Fix JIT compilation of conditional blocks whose assertion is converted to
   (*FAIL). E.g: /(?(?!))/.

   6. The pattern /(?(?!)^)/ caused references to random memory. This bug was
   discovered by the LLVM fuzzer.

   7. The assertion (?!) is optimized to (*FAIL). This was not handled correctly
   when this assertion was used as a condition, for example (?(?!)a|b). In
   pcre2_match() it worked by luck; in pcre2_dfa_match() it gave an incorrect
   error about an unsupported item.

   8. For some types of pattern, for example /Z*(|d*){216}/, the auto-
   possessification code could take exponential time to complete. A recursion
   depth limit of 1000 has been imposed to limit the resources used by this
   optimization. This infelicity was discovered by the LLVM fuzzer.

   9. A pattern such as /(*UTF)[\S\V\H]/, which contains a negated special class
   such as \S in non-UCP mode, explicit wide characters (> 255) can be ignored
   because \S ensures they are all in the class. The code for doing this was
   interacting badly with the code for computing the amount of space needed to
   compile the pattern, leading to a buffer overflow. This bug was discovered by
   the LLVM fuzzer.

   10. A pattern such as /((?2)+)((?1))/ which has mutual recursion nested inside
   other kinds of group caused stack overflow at compile time. This bug was
   discovered by the LLVM fuzzer.

   11. A pattern such as /(?1)(?#?'){8}(a)/ which had a parenthesized comment
   between a subroutine call and its quantifier was incorrectly compiled, leading
   to buffer overflow or other errors. This bug was discovered by the LLVM fuzzer.

   12. The illegal pattern /(?(?<E>.*!.*)?)/ was not being diagnosed as missing an
   assertion after (?(. The code was failing to check the character after (?(?<
   for the ! or = that would indicate a lookbehind assertion. This bug was
   discovered by the LLVM fuzzer.

   13. A pattern such as /X((?2)()*+){2}+/ which has a possessive quantifier with
   a fixed maximum following a group that contains a subroutine reference was
   incorrectly compiled and could trigger buffer overflow. This bug was discovered
   by the LLVM fuzzer.

   14. Negative relative recursive references such as (?-7) to non-existent
   subpatterns were not being diagnosed and could lead to unpredictable behaviour.
   This bug was discovered by the LLVM fuzzer.

   15. The bug fixed in 14 was due to an integer variable that was unsigned when
   it should have been signed. Some other "int" variables, having been checked,
   have either been changed to uint32_t or commented as "must be signed".

   16. A mutual recursion within a lookbehind assertion such as (?<=((?2))((?1)))
   caused a stack overflow instead of the diagnosis of a non-fixed length
   lookbehind assertion. This bug was discovered by the LLVM fuzzer.

   17. The use of \K in a positive lookbehind assertion in a non-anchored pattern
   (e.g. /(?<=\Ka)/) could make pcre2grep loop.

   18. There was a similar problem to 17 in pcre2test for global matches, though
   the code there did catch the loop.

   19. If a greedy quantified \X was preceded by \C in UTF mode (e.g. \C\X*),
   and a subsequent item in the pattern caused a non-match, backtracking over the
   repeated \X did not stop, but carried on past the start of the subject, causing
   reference to random memory and/or a segfault. There were also some other cases
   where backtracking after \C could crash. This set of bugs was discovered by the
   LLVM fuzzer.

   20. The function for finding the minimum length of a matching string could take
   a very long time if mutual recursion was present many times in a pattern, for
   example, /((?2){73}(?2))((?1))/. A better mutual recursion detection method has
   been implemented. This infelicity was discovered by the LLVM fuzzer.

   21. Implemented PCRE2_NEVER_BACKSLASH_C.

   22. The feature for string replication in pcre2test could read from freed
   memory if the replication required a buffer to be extended, and it was not
   working properly in 16-bit and 32-bit modes. This issue was discovered by a
   fuzzer: see http://lcamtuf.coredump.cx/afl/.

   23. Added the PCRE2_ALT_CIRCUMFLEX option.

   24. Adjust the treatment of \8 and \9 to be the same as the current Perl
   behaviour.

   25. Static linking against the PCRE2 library using the pkg-config module was
   failing on missing pthread symbols.

   26. If a group that contained a recursive back reference also contained a
   forward reference subroutine call followed by a non-forward-reference
   subroutine call, for example /.((?2)(?R)\1)()/, pcre2_compile() failed to
   compile correct code, leading to undefined behaviour or an internally detected
   error. This bug was discovered by the LLVM fuzzer.

   27. Quantification of certain items (e.g. atomic back references) could cause
   incorrect code to be compiled when recursive forward references were involved.
   For example, in this pattern: /(?1)()((((((\1++))\x85)+)|))/. This bug was
   discovered by the LLVM fuzzer.

   28. A repeated conditional group whose condition was a reference by name caused
   a buffer overflow if there was more than one group with the given name. This
   bug was discovered by the LLVM fuzzer.

   29. A recursive back reference by name within a group that had the same name as
   another group caused a buffer overflow. For example: /(?J)(?'d'(?'d'\g{d}))/.
   This bug was discovered by the LLVM fuzzer.

   30. A forward reference by name to a group whose number is the same as the
   current group, for example in this pattern: /(?|(\k'Pm')|(?'Pm'))/, caused a
   buffer overflow at compile time. This bug was discovered by the LLVM fuzzer.

   31. Fix -fsanitize=undefined warnings for left shifts of 1 by 31 (it treats 1
   as an int; fixed by writing it as 1u).

   32. Fix pcre2grep compile when -std=c99 is used with gcc, though it still gives
   a warning for "fileno" unless -std=gnu99 us used.

   33. A lookbehind assertion within a set of mutually recursive subpatterns could
   provoke a buffer overflow. This bug was discovered by the LLVM fuzzer.

   34. Give an error for an empty subpattern name such as (?'').

   35. Make pcre2test give an error if a pattern that follows #forbud_utf contains
   \P, \p, or \X.

   36. The way named subpatterns are handled has been refactored. There is now a
   pre-pass over the regex which does nothing other than identify named
   subpatterns and count the total captures. This means that information about
   named patterns is known before the rest of the compile. In particular, it means
   that forward references can be checked as they are encountered. Previously, the
   code for handling forward references was contorted and led to several errors in
   computing the memory requirements for some patterns, leading to buffer
   overflows.

   37. There was no check for integer overflow in subroutine calls such as (?123).

   38. The table entry for \l in EBCDIC environments was incorrect, leading to its
   being treated as a literal 'l' instead of causing an error.

   39. If a non-capturing group containing a conditional group that could match
   an empty string was repeated, it was not identified as matching an empty string
   itself. For example: /^(?:(?(1)x|)+)+$()/.

   40. In an EBCDIC environment, pcretest was mishandling the escape sequences
   \a and \e in test subject lines.

   41. In an EBCDIC environment, \a in a pattern was converted to the ASCII
   instead of the EBCDIC value.

   42. The handling of \c in an EBCDIC environment has been revised so that it is
   now compatible with the specification in Perl's perlebcdic page.

   43. Single character repetition in JIT has been improved. 20-30% speedup
   was achieved on certain patterns.

   44. The EBCDIC character 0x41 is a non-breaking space, equivalent to 0xa0 in
   ASCII/Unicode. This has now been added to the list of characters that are
   recognized as white space in EBCDIC.

   45. When PCRE2 was compiled without Unicode support, the use of \p and \P gave
   an error (correctly) when used outside a class, but did not give an error
   within a class.

   46. \h within a class was incorrectly compiled in EBCDIC environments.

   47. JIT should return with error when the compiled pattern requires
   more stack space than the maximum.

   48. Fixed a memory leak in pcre2grep when a locale is set.


   To generate a diff of this commit:
   cvs rdiff -u -r1.1 -r1.2 pkgsrc/devel/pcre2/Makefile pkgsrc/devel/pcre2/PLIST \
       pkgsrc/devel/pcre2/buildlink3.mk
   cvs rdiff -u -r1.2 -r1.3 pkgsrc/devel/pcre2/distinfo

Revision 1.4: download - view: text, markup, annotated - select for diffs
Wed Jan 13 12:31:41 2016 UTC (9 years, 2 months ago) by nros
Branches: MAIN
CVS tags: pkgsrc-2016Q2-base, pkgsrc-2016Q1-base, pkgsrc-2016Q1
Branch point for: pkgsrc-2016Q2
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +2 -3 lines
Update devel/pcre2 to version 10.21.

Change Log for PCRE2
--------------------

Version 10.21 12-January-2016
-----------------------------

1. Improve matching speed of patterns starting with + or * in JIT.

2. Use memchr() to find the first character in an unanchored match in 8-bit
mode in the interpreter. This gives a significant speed improvement.

3. Removed a redundant copy of the opcode_possessify table in the
pcre2_auto_possessify.c source.

4. Fix typos in dftables.c for z/OS.

5. Change 36 for 10.20 broke the handling of [[:>:]] and [[:<:]] in that
processing them could involve a buffer overflow if the following character was
an opening parenthesis.

6. Change 36 for 10.20 also introduced a bug in processing this pattern:
/((?x)(*:0))#(?'/. Specifically: if a setting of (?x) was followed by a (*MARK)
setting (which (*:0) is), then (?x) did not get unset at the end of its group
during the scan for named groups, and hence the external # was incorrectly
treated as a comment and the invalid (?' at the end of the pattern was not
diagnosed. This caused a buffer overflow during the real compile. This bug was
discovered by Karl Skomski with the LLVM fuzzer.

7. Moved the pcre2_find_bracket() function from src/pcre2_compile.c into its
own source module to avoid a circular dependency between src/pcre2_compile.c
and src/pcre2_study.c

8. A callout with a string argument containing an opening square bracket, for
example /(?C$[$)(?<]/, was incorrectly processed and could provoke a buffer
overflow. This bug was discovered by Karl Skomski with the LLVM fuzzer.

9. The handling of callouts during the pre-pass for named group identification
has been tightened up.

10. The quantifier {1} can be ignored, whether greedy, non-greedy, or
possessive. This is a very minor optimization.

11. A possessively repeated conditional group that could match an empty string,
for example, /(?(R))*+/, was incorrectly compiled.

12. The Unicode tables have been updated to Unicode 8.0.0 (thanks to Christian
Persch).

13. An empty comment (?#) in a pattern was incorrectly processed and could
provoke a buffer overflow. This bug was discovered by Karl Skomski with the
LLVM fuzzer.

14. Fix infinite recursion in the JIT compiler when certain patterns such as
/(?:|a|){100}x/ are analysed.

15. Some patterns with character classes involving [: and \\ were incorrectly
compiled and could cause reading from uninitialized memory or an incorrect
error diagnosis. Examples are: /[[:\\](?<[::]/ and /[[:\\](?'abc')[a:]. The
first of these bugs was discovered by Karl Skomski with the LLVM fuzzer.

16. Pathological patterns containing many nested occurrences of [: caused
pcre2_compile() to run for a very long time. This bug was found by the LLVM
fuzzer.

17. A missing closing parenthesis for a callout with a string argument was not
being diagnosed, possibly leading to a buffer overflow. This bug was found by
the LLVM fuzzer.

18. A conditional group with only one branch has an implicit empty alternative
branch and must therefore be treated as potentially matching an empty string.

19. If (?R was followed by - or + incorrect behaviour happened instead of a
diagnostic. This bug was discovered by Karl Skomski with the LLVM fuzzer.

20. Another bug that was introduced by change 36 for 10.20: conditional groups
whose condition was an assertion preceded by an explicit callout with a string
argument might be incorrectly processed, especially if the string contained \Q.
This bug was discovered by Karl Skomski with the LLVM fuzzer.

21. Compiling PCRE2 with the sanitize options of clang showed up a number of
very pedantic coding infelicities and a buffer overflow while checking a UTF-8
string if the final multi-byte UTF-8 character was truncated.

22. For Perl compatibility in EBCDIC environments, ranges such as a-z in a
class, where both values are literal letters in the same case, omit the
non-letter EBCDIC code points within the range.

23. Finding the minimum matching length of complex patterns with back
references and/or recursions can take a long time. There is now a cut-off that
gives up trying to find a minimum length when things get too complex.

24. An optimization has been added that speeds up finding the minimum matching
length for patterns containing repeated capturing groups or recursions.

25. If a pattern contained a back reference to a group whose number was
duplicated as a result of appearing in a (?|...) group, the computation of the
minimum matching length gave a wrong result, which could cause incorrect "no
match" errors. For such patterns, a minimum matching length cannot at present
be computed.

26. Added a check for integer overflow in conditions (?(<digits>) and
(?(R<digits>). This omission was discovered by Karl Skomski with the LLVM
fuzzer.

27. Fixed an issue when \p{Any} inside an xclass did not read the current
character.

28. If pcre2grep was given the -q option with -c or -l, or when handling a
binary file, it incorrectly wrote output to stdout.

29. The JIT compiler did not restore the control verb head in case of *THEN
control verbs. This issue was found by Karl Skomski with a custom LLVM fuzzer.

30. The way recursive references such as (?3) are compiled has been re-written
because the old way was the cause of many issues. Now, conversion of the group
number into a pattern offset does not happen until the pattern has been
completely compiled. This does mean that detection of all infinitely looping
recursions is postponed till match time. In the past, some easy ones were
detected at compile time. This re-writing was done in response to yet another
bug found by the LLVM fuzzer.

31. A test for a back reference to a non-existent group was missing for items
such as \987. This caused incorrect code to be compiled. This issue was found
by Karl Skomski with a custom LLVM fuzzer.

32. Error messages for syntax errors following \g and \k were giving inaccurate
offsets in the pattern.

33. Improve the performance of starting single character repetitions in JIT.

34. (*LIMIT_MATCH=) now gives an error instead of setting the value to 0.

35. Error messages for syntax errors in *LIMIT_MATCH and *LIMIT_RECURSION now
give the right offset instead of zero.

36. The JIT compiler should not check repeats after a {0,1} repeat byte code.
This issue was found by Karl Skomski with a custom LLVM fuzzer.

37. The JIT compiler should restore the control chain for empty possessive
repeats. This issue was found by Karl Skomski with a custom LLVM fuzzer.

38. A bug which was introduced by the single character repetition optimization
was fixed.

39. Match limit check added to recursion. This issue was found by Karl Skomski
with a custom LLVM fuzzer.

40. Arrange for the UTF check in pcre2_match() and pcre2_dfa_match() to look
only at the part of the subject that is relevant when the starting offset is
non-zero.

41. Improve first character match in JIT with SSE2 on x86.

42. Fix two assertion fails in JIT. These issues were found by Karl Skomski
with a custom LLVM fuzzer.

43. Correct the setting of CMAKE_C_FLAGS in CMakeLists.txt (patch from Roy Ivy
III).

44. Fix bug in RunTest.bat for new test 14, and adjust the script for the added
test (there are now 20 in total).

45. Fixed a corner case of range optimization in JIT.

46. Add the ${*MARK} facility to pcre2_substitute().

47. Modifier lists in pcre2test were splitting at spaces without the required
commas.

48. Implemented PCRE2_ALT_VERBNAMES.

49. Fixed two issues in JIT. These were found by Karl Skomski with a custom
LLVM fuzzer.

50. The pcre2test program has been extended by adding the #newline_default
command. This has made it possible to run the standard tests when PCRE2 is
compiled with either CR or CRLF as the default newline convention. As part of
this work, the new command was added to several test files and the testing
scripts were modified. The pcre2grep tests can now also be run when there is no
LF in the default newline convention.

51. The RunTest script has been modified so that, when JIT is used and valgrind
is specified, a valgrind suppressions file is set up to ignore "Invalid read of
size 16" errors because these are false positives when the hardware supports
the SSE2 instruction set.

52. It is now possible to have comment lines amid the subject strings in
pcre2test (and perltest.sh) input.

53. Implemented PCRE2_USE_OFFSET_LIMIT and pcre2_set_offset_limit().

54. Add the null_context modifier to pcre2test so that calling pcre2_compile()
and the matching functions with NULL contexts can be tested.

55. Implemented PCRE2_SUBSTITUTE_EXTENDED.

56. In a character class such as [\W\p{Any}] where both a negative-type escape
("not a word character") and a property escape were present, the property
escape was being ignored.

57. Fixed integer overflow for patterns whose minimum matching length is very,
very large.

58. Implemented --never-backslash-C.

59. Change 55 above introduced a bug by which certain patterns provoked the
erroneous error "\ at end of pattern".

60. The special sequences [[:<:]] and [[:>:]] gave rise to incorrect compiling
errors or other strange effects if compiled in UCP mode. Found with libFuzzer
and AddressSanitizer.

61. Whitespace at the end of a pcre2test pattern line caused a spurious error
message if there were only single-character modifiers. It should be ignored.

62. The use of PCRE2_NO_AUTO_CAPTURE could cause incorrect compilation results
or segmentation errors for some patterns. Found with libFuzzer and
AddressSanitizer.

63. Very long names in (*MARK) or (*THEN) etc. items could provoke a buffer
overflow.

64. Improve error message for overly-complicated patterns.

65. Implemented an optional replication feature for patterns in pcre2test, to
make it easier to test long repetitive patterns. The tests for 63 above are
converted to use the new feature.

66. In the POSIX wrapper, if regerror() was given too small a buffer, it could
misbehave.

67. In pcre2_substitute() in UTF mode, the UTF validity check on the
replacement string was happening before the length setting when the replacement
string was zero-terminated.

68. In pcre2_substitute() in UTF mode, PCRE2_NO_UTF_CHECK can be set for the
second and subsequent calls to pcre2_match().

69. There was no check for integer overflow for a replacement group number in
pcre2_substitute(). An added check for a number greater than the largest group
number in the pattern means this is not now needed.

70. The PCRE2-specific VERSION condition didn't work correctly if only one
digit was given after the decimal point, or if more than two digits were given.
It now works with one or two digits, and gives a compile time error if more are
given.

71. In pcre2_substitute() there was the possibility of reading one code unit
beyond the end of the replacement string.

72. The code for checking a subject's UTF-32 validity for a pattern with a
lookbehind involved an out-of-bounds pointer, which could potentially cause
trouble in some environments.

73. The maximum lookbehind length was incorrectly calculated for patterns such
as /(?<=(a)(?-1))x/ which have a recursion within a backreference.

74. Give an error if a lookbehind assertion is longer than 65535 code units.

75. Give an error in pcre2_substitute() if a match ends before it starts (as a
result of the use of \K).

76. Check the length of subpattern names and the names in (*MARK:xx) etc.
dynamically to avoid the possibility of integer overflow.

77. Implement pcre2_set_max_pattern_length() so that programs can restrict the
size of patterns that they are prepared to handle.

78. (*NO_AUTO_POSSESS) was not working.

79. Adding group information caching improves the speed of compiling when
checking whether a group has a fixed length and/or could match an empty string,
especially when recursion or subroutine calls are involved. However, this
cannot be used when (?| is present in the pattern because the same number may
be used for groups of different sizes. To catch runaway patterns in this
situation, counts have been introduced to the functions that scan for empty
branches or compute fixed lengths.

80. Allow for the possibility of the size of the nest_save structure not being
a factor of the size of the compiling workspace (it currently is).

81. Check for integer overflow in minimum length calculation and cap it at
65535.

82. Small optimizations in code for finding the minimum matching length.

83. Lock out configuring for EBCDIC with non-8-bit libraries.

84. Test for error code <= 0 in regerror().

85. Check for too many replacements (more than INT_MAX) in pcre2_substitute().

86. Avoid the possibility of computing with an out-of-bounds pointer (though
not dereferencing it) while handling lookbehind assertions.

87. Failure to get memory for the match data in regcomp() is now given as a
regcomp() error instead of waiting for regexec() to pick it up.

88. In pcre2_substitute(), ensure that CRLF is not split when it is a valid
newline sequence.

89. Paranoid check in regcomp() for bad error code from pcre2_compile().

90. Run test 8 (internal offsets and code sizes) for link sizes 3 and 4 as well
as for link size 2.

91. Document that JIT has a limit on pattern size, and give more information
about JIT compile failures in pcre2test.

92. Implement PCRE2_INFO_HASBACKSLASHC.

93. Re-arrange valgrind support code in pcre2test to avoid spurious reports
with JIT (possibly caused by SSE2?).

94. Support offset_limit in JIT.

95. A sequence such as [[:punct:]b] that is, a POSIX character class followed
by a single ASCII character in a class item, was incorrectly compiled in UCP
mode. The POSIX class got lost, but only if the single character followed it.

96. [:punct:] in UCP mode was matching some characters in the range 128-255
that should not have been matched.

97. If [:^ascii:] or [:^xdigit:] are present in a non-negated class, all
characters with code points greater than 255 are in the class. When a Unicode
property was also in the class (if PCRE2_UCP is set, escapes such as \w are
turned into Unicode properties), wide characters were not correctly handled,
and could fail to match.

98. In pcre2test, make the "startoffset" modifier a synonym of "offset",
because it sets the "startoffset" parameter for pcre2_match().

99. If PCRE2_AUTO_CALLOUT was set on a pattern that had a (?# comment between
an item and its qualifier (for example, A(?#comment)?B) pcre2_compile()
misbehaved. This bug was found by the LLVM fuzzer.

100. The error for an invalid UTF pattern string always gave the code unit
offset as zero instead of where the invalidity was found.

101. Further to 97 above, negated classes such as [^[:^ascii:]\d] were also not
working correctly in UCP mode.

102. Similar to 99 above, if an isolated \E was present between an item and its
qualifier when PCRE2_AUTO_CALLOUT was set, pcre2_compile() misbehaved. This bug
was found by the LLVM fuzzer.

103. The POSIX wrapper function regexec() crashed if the option REG_STARTEND
was set when the pmatch argument was NULL. It now returns REG_INVARG.

104. Allow for up to 32-bit numbers in the ordin() function in pcre2grep.

105. An empty \Q\E sequence between an item and its qualifier caused
pcre2_compile() to misbehave when auto callouts were enabled. This bug
was found by the LLVM fuzzer.

106. If both PCRE2_ALT_VERBNAMES and PCRE2_EXTENDED were set, and a (*MARK) or
other verb "name" ended with whitespace immediately before the closing
parenthesis, pcre2_compile() misbehaved. Example: /(*:abc )/, but only when
both those options were set.

107. In a number of places pcre2_compile() was not handling NULL characters
correctly, and pcre2test with the "bincode" modifier was not always correctly
displaying fields containing NULLS:

   (a) Within /x extended #-comments
   (b) Within the "name" part of (*MARK) and other *verbs
   (c) Within the text argument of a callout

108. If a pattern that was compiled with PCRE2_EXTENDED started with white
space or a #-type comment that was followed by (?-x), which turns off
PCRE2_EXTENDED, and there was no subsequent (?x) to turn it on again,
pcre2_compile() assumed that (?-x) applied to the whole pattern and
consequently mis-compiled it. This bug was found by the LLVM fuzzer. The fix
for this bug means that a setting of any of the (?imsxU) options at the start
of a pattern is no longer transferred to the options that are returned by
PCRE2_INFO_ALLOPTIONS. In fact, this was an anachronism that should have
changed when the effects of those options were all moved to compile time.

109. An escaped closing parenthesis in the "name" part of a (*verb) when
PCRE2_ALT_VERBNAMES was set caused pcre2_compile() to malfunction. This bug
was found by the LLVM fuzzer.

110. Implemented PCRE2_SUBSTITUTE_UNSET_EMPTY, and updated pcre2test to make it
possible to test it.

111. "Harden" pcre2test against ridiculously large values in modifiers and
command line arguments.

112. Implemented PCRE2_SUBSTITUTE_UNKNOWN_UNSET and PCRE2_SUBSTITUTE_OVERFLOW_
LENGTH.

113. Fix printing of *MARK names that contain binary zeroes in pcre2test.

Revision 1.3: download - view: text, markup, annotated - select for diffs
Tue Jan 5 20:41:34 2016 UTC (9 years, 2 months ago) by nros
Branches: MAIN
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +9 -1 lines
Make devel/pcre2 more complete.
Enable building of the 16 and 32-bit libraries.
enable pcre2-grep to read .gz and .bz2 files.
bump pkgrevision.

Revision 1.2: download - view: text, markup, annotated - select for diffs
Tue Dec 29 14:40:20 2015 UTC (9 years, 2 months ago) by bsiegert
Branches: MAIN
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +2 -2 lines
Update pcre2 to 10.20. Fix CVE-2015-8381.

Version 10.20 30-June-2015
--------------------------

1. Callouts with string arguments have been added.

2. Assertion code generator in JIT has been optimized.

3. The invalid pattern (?(?C) has a missing assertion condition at the end. The
pcre2_compile() function read past the end of the input before diagnosing an
error. This bug was discovered by the LLVM fuzzer.

4. Implemented pcre2_callout_enumerate().

5. Fix JIT compilation of conditional blocks whose assertion is converted to
(*FAIL). E.g: /(?(?!))/.

6. The pattern /(?(?!)^)/ caused references to random memory. This bug was
discovered by the LLVM fuzzer.

7. The assertion (?!) is optimized to (*FAIL). This was not handled correctly
when this assertion was used as a condition, for example (?(?!)a|b). In
pcre2_match() it worked by luck; in pcre2_dfa_match() it gave an incorrect
error about an unsupported item.

8. For some types of pattern, for example /Z*(|d*){216}/, the auto-
possessification code could take exponential time to complete. A recursion
depth limit of 1000 has been imposed to limit the resources used by this
optimization. This infelicity was discovered by the LLVM fuzzer.

9. A pattern such as /(*UTF)[\S\V\H]/, which contains a negated special class
such as \S in non-UCP mode, explicit wide characters (> 255) can be ignored
because \S ensures they are all in the class. The code for doing this was
interacting badly with the code for computing the amount of space needed to
compile the pattern, leading to a buffer overflow. This bug was discovered by
the LLVM fuzzer.

10. A pattern such as /((?2)+)((?1))/ which has mutual recursion nested inside
other kinds of group caused stack overflow at compile time. This bug was
discovered by the LLVM fuzzer.

11. A pattern such as /(?1)(?#?'){8}(a)/ which had a parenthesized comment
between a subroutine call and its quantifier was incorrectly compiled, leading
to buffer overflow or other errors. This bug was discovered by the LLVM fuzzer.

12. The illegal pattern /(?(?<E>.*!.*)?)/ was not being diagnosed as missing an
assertion after (?(. The code was failing to check the character after (?(?<
for the ! or = that would indicate a lookbehind assertion. This bug was
discovered by the LLVM fuzzer.

13. A pattern such as /X((?2)()*+){2}+/ which has a possessive quantifier with
a fixed maximum following a group that contains a subroutine reference was
incorrectly compiled and could trigger buffer overflow. This bug was discovered
by the LLVM fuzzer.

14. Negative relative recursive references such as (?-7) to non-existent
subpatterns were not being diagnosed and could lead to unpredictable behaviour.
This bug was discovered by the LLVM fuzzer.

15. The bug fixed in 14 was due to an integer variable that was unsigned when
it should have been signed. Some other "int" variables, having been checked,
have either been changed to uint32_t or commented as "must be signed".

16. A mutual recursion within a lookbehind assertion such as (?<=((?2))((?1)))
caused a stack overflow instead of the diagnosis of a non-fixed length
lookbehind assertion. This bug was discovered by the LLVM fuzzer.

17. The use of \K in a positive lookbehind assertion in a non-anchored pattern
(e.g. /(?<=\Ka)/) could make pcre2grep loop.

18. There was a similar problem to 17 in pcre2test for global matches, though
the code there did catch the loop.

19. If a greedy quantified \X was preceded by \C in UTF mode (e.g. \C\X*),
and a subsequent item in the pattern caused a non-match, backtracking over the
repeated \X did not stop, but carried on past the start of the subject, causing
reference to random memory and/or a segfault. There were also some other cases
where backtracking after \C could crash. This set of bugs was discovered by the
LLVM fuzzer.

20. The function for finding the minimum length of a matching string could take
a very long time if mutual recursion was present many times in a pattern, for
example, /((?2){73}(?2))((?1))/. A better mutual recursion detection method has
been implemented. This infelicity was discovered by the LLVM fuzzer.

21. Implemented PCRE2_NEVER_BACKSLASH_C.

22. The feature for string replication in pcre2test could read from freed
memory if the replication required a buffer to be extended, and it was not
working properly in 16-bit and 32-bit modes. This issue was discovered by a
fuzzer: see http://lcamtuf.coredump.cx/afl/.

23. Added the PCRE2_ALT_CIRCUMFLEX option.

24. Adjust the treatment of \8 and \9 to be the same as the current Perl
behaviour.

25. Static linking against the PCRE2 library using the pkg-config module was
failing on missing pthread symbols.

26. If a group that contained a recursive back reference also contained a
forward reference subroutine call followed by a non-forward-reference
subroutine call, for example /.((?2)(?R)\1)()/, pcre2_compile() failed to
compile correct code, leading to undefined behaviour or an internally detected
error. This bug was discovered by the LLVM fuzzer.

27. Quantification of certain items (e.g. atomic back references) could cause
incorrect code to be compiled when recursive forward references were involved.
For example, in this pattern: /(?1)()((((((\1++))\x85)+)|))/. This bug was
discovered by the LLVM fuzzer.

28. A repeated conditional group whose condition was a reference by name caused
a buffer overflow if there was more than one group with the given name. This
bug was discovered by the LLVM fuzzer.

29. A recursive back reference by name within a group that had the same name as
another group caused a buffer overflow. For example: /(?J)(?'d'(?'d'\g{d}))/.
This bug was discovered by the LLVM fuzzer.

30. A forward reference by name to a group whose number is the same as the
current group, for example in this pattern: /(?|(\k'Pm')|(?'Pm'))/, caused a
buffer overflow at compile time. This bug was discovered by the LLVM fuzzer.

31. Fix -fsanitize=undefined warnings for left shifts of 1 by 31 (it treats 1
as an int; fixed by writing it as 1u).

32. Fix pcre2grep compile when -std=c99 is used with gcc, though it still gives
a warning for "fileno" unless -std=gnu99 us used.

33. A lookbehind assertion within a set of mutually recursive subpatterns could
provoke a buffer overflow. This bug was discovered by the LLVM fuzzer.

34. Give an error for an empty subpattern name such as (?'').

35. Make pcre2test give an error if a pattern that follows #forbud_utf contains
\P, \p, or \X.

36. The way named subpatterns are handled has been refactored. There is now a
pre-pass over the regex which does nothing other than identify named
subpatterns and count the total captures. This means that information about
named patterns is known before the rest of the compile. In particular, it means
that forward references can be checked as they are encountered. Previously, the
code for handling forward references was contorted and led to several errors in
computing the memory requirements for some patterns, leading to buffer
overflows.

37. There was no check for integer overflow in subroutine calls such as (?123).

38. The table entry for \l in EBCDIC environments was incorrect, leading to its
being treated as a literal 'l' instead of causing an error.

39. If a non-capturing group containing a conditional group that could match
an empty string was repeated, it was not identified as matching an empty string
itself. For example: /^(?:(?(1)x|)+)+$()/.

40. In an EBCDIC environment, pcretest was mishandling the escape sequences
\a and \e in test subject lines.

41. In an EBCDIC environment, \a in a pattern was converted to the ASCII
instead of the EBCDIC value.

42. The handling of \c in an EBCDIC environment has been revised so that it is
now compatible with the specification in Perl's perlebcdic page.

43. Single character repetition in JIT has been improved. 20-30% speedup
was achieved on certain patterns.

44. The EBCDIC character 0x41 is a non-breaking space, equivalent to 0xa0 in
ASCII/Unicode. This has now been added to the list of characters that are
recognized as white space in EBCDIC.

45. When PCRE2 was compiled without Unicode support, the use of \p and \P gave
an error (correctly) when used outside a class, but did not give an error
within a class.

46. \h within a class was incorrectly compiled in EBCDIC environments.

47. JIT should return with error when the compiled pattern requires
more stack space than the maximum.

48. Fixed a memory leak in pcre2grep when a locale is set.

Revision 1.1: download - view: text, markup, annotated - select for diffs
Sun Apr 19 19:18:22 2015 UTC (9 years, 11 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2015Q4-base, pkgsrc-2015Q3-base, pkgsrc-2015Q3, pkgsrc-2015Q2-base, pkgsrc-2015Q2
Branch point for: pkgsrc-2015Q4
Import pcre2-10.10 as devel/pcre2.

PCRE2 is a re-working of the original PCRE library to provide an entirely new
API.

PCRE2 is written in C, and it has its own API. There are three sets of
functions, one for the 8-bit library, which processes strings of bytes, one for
the 16-bit library, which processes strings of 16-bit values, and one for the
32-bit library, which processes strings of 32-bit values. There are no C++
wrappers.

Diff request

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

Log view options

CVSweb <webmaster@jp.NetBSD.org>