This is a regular release, incorporating security fixes along with fixes and small improvements to library behaviour.
This release is available as before as a (signed) Git tag, or alternatively as a (signed) tarball of the Git tag (attestation).
NEWS
Only changes to behaviour, changes to the API, and other significant changes are described here. Please see the ChangeLog and Git log for further details.
-
(Git change) Renamed the default development branch from master to main.
-
(Maintenance change) Added a five-year support lifecycle policy and publication of backport patches for security and high-severity fixes in older releases.
-
(Security fix for specific API usage, GHSA-2p8c-ff85-vh9x) If
pcre2_jit_compile()is called with options for some match modes, and thenpcre2_match()is used to perform a match for a different match mode, an out-of-bounds read can occur if the match is attempted against invalid UTF input. -
(Security fix for pattern conversion, GHSA-q8g2-wprr-34m9) If
pcre2_convert()is called on untrusted input on platforms with 32-bitsize_t, an out-of-bounds heap write can occur. -
(Security fix, GHSA-3r4p-g7gg-ppmf) Fixed an out-of-bounds write in DFA matching when using a heap limit; also fixed possible integer overflows which could cause under-allocation of the workspace.
-
(Security fix, GHSA-fmgr-6ggq-9859) Added bounds checks for several integer overflows while compiling patterns on 32-bit CPUs, which could cause under-allocation followed by out-of-bounds writes.
-
(Security fix, GHSA-9qww-pwc4-77qq) Applied lower buffer bound to prevent two out-of-bounds reads while scanning backwards through invalid UTF data with
PCRE2_MATCH_INVALID_UTF. -
(Matching correctness) Fixed several matching issues:
- A JIT-specific matching bug affecting prefix scanning on patterns with repeats (#875).
- A JIT-specific matching bug in variable-length lookbehinds (#912).
- Miscompiled Unicode character classes combining characters at or below U+00FF with characters at U+0100 and U+8000 or above (#841).
- Incorrect JIT character advancement with
PCRE2_MATCH_INVALID_UTFin UTF-8 and UTF-16 modes, which could skip adjacent characters (#945).
-
(Behaviour change) Updated Unicode support to Unicode 17.0.
-
(Small behaviour changes) Many small fixes, including
pcre2_substitute()improvements, optimisation of possessive backreference matching, andpcre2_compile()fixes. -
(Small build changes) Many small adjustments to the CMake and Zig builds.
-
(Security fix for specific API usage, #937) Fixed a leak and later invalid free when calling the fast-path
pcre2_jit_match()function with a match data object previously used withpcre2_match()andPCRE2_COPY_MATCHED_SUBJECT. -
(Low-severity security fix, GHSA-q7rw-r7qq-2hx6) Fixed exposure of two uninitialised bytes from
malloc()viapcre2_serialize_encode().
New Contributors
- @heitbaum made their first contribution in #879
- @cuiweixie made their first contribution in #888
- @bernardassan made their first contribution in #894
- @puffnfresh made their first contribution in #893
- @mrdimidium made their first contribution in #907
- @nankishre made their first contribution in #922
- @iliaal made their first contribution in #909
- @mattst88 made their first contribution in #938
- @sage-mode-hunter made their first contribution in #948
- @karpovantonme made their first contribution in #947
- @arcusbuilds made their first contribution in #953
- @moyer-avs made their first contribution in #958