Commit Graph

367 Commits

Author SHA1 Message Date
Philip.Hazel e7727c36be Don't use group caching when (?| is involved; instead use a counter to cap too
much computation.
2015-11-10 14:33:28 +00:00
Philip.Hazel a710d3b37b Cap minimum length at 65535 and check for integer overflow. 2015-11-09 18:45:15 +00:00
Philip.Hazel 1bd3658bd9 Allow for the possibility of the size of the nest_save structure not being
a factor of the size of the compiling workspace.
2015-11-09 17:39:43 +00:00
Philip.Hazel 89b1ae1c98 Use caching to improve could_be_empty() and find_fixed_length() compile times,
especially when recursion/subroutine calls are present.
2015-11-08 14:20:09 +00:00
Philip.Hazel 2909e2411c Fix (*NO_AUTO_POSSESS) 2015-11-05 18:03:16 +00:00
Philip.Hazel b7ee0684e3 Implement pcre2_set_max_pattern_length() 2015-11-05 17:33:39 +00:00
Philip.Hazel b02bb996af Check subpattern name lengths dynamically. 2015-11-03 20:04:23 +00:00
Philip.Hazel 4ad83f7103 Dynamic check of (*MARK) etc name length to avoid the possibility of overflow. 2015-11-03 19:14:31 +00:00
Philip.Hazel 2caf22dc61 Forbid \K patterns that end before they start in pcre2_substitute(). 2015-11-03 17:38:00 +00:00
Philip.Hazel 75181cca2e Give error for overlong lookbehind assertion. 2015-11-03 10:39:27 +00:00
Philip.Hazel 7d7a92edef Bad max lookbehind length was calculated when a back reference contained a
recursion.
2015-11-01 17:31:48 +00:00
Philip.Hazel aaa23388c7 Fix dodgy code for UTF-32 checking. 2015-11-01 16:54:17 +00:00
Philip.Hazel a0d04b9fa3 Fix off-by-one bug in pcre2_substitute(). 2015-11-01 16:36:20 +00:00
Philip.Hazel f72b753f73 Fix VERSION condition bug. 2015-11-01 16:28:13 +00:00
Philip.Hazel 284d42fa7e Avoid the need for an integer overflow check in pcre2_substitute() by adding a
check for a number greater than the largest capturing group.
2015-10-30 18:25:19 +00:00
Philip.Hazel 890250535b Use PCRE2_NO_UTF_CHECK for the second and subsequent matches in
pcre2_substitute().
2015-10-30 17:41:56 +00:00
Philip.Hazel efccea98f1 Fix pcre2_substitute(): set zero-terminated length before UTF validity check. 2015-10-30 17:30:03 +00:00
Philip.Hazel 4b242c4c78 Fix regerror() small buffer issues. 2015-10-30 17:17:40 +00:00
Philip.Hazel 4ce7652a0e Add replication feature for patterns to pcre2test. 2015-10-30 15:20:07 +00:00
Philip.Hazel d1b4d99bc5 Improve error message for overly-complicated patterns. 2015-10-28 09:59:53 +00:00
Philip.Hazel 9577d9e165 Fix overlong (*MARK) or (*THEN) names bug. 2015-10-28 09:25:31 +00:00
Philip.Hazel 766fbc81d0 Fix PCRE2_NO_AUTO_CAPTURE bug. 2015-10-25 17:35:34 +00:00
Philip.Hazel 8a8d0ced69 Fix spurious error in pcre2test when single-letter modifiers at the end of a line have trailing spaces. 2015-10-22 15:49:54 +00:00
Philip.Hazel 2f542eb1c5 Add attribution for last bug. 2015-10-21 15:59:45 +00:00
Philip.Hazel 94eda7669a Fix UCP with [[:<]] and [[:>:]] bad compile bug. 2015-10-21 11:29:07 +00:00
Philip.Hazel 836fbb1148 Fix erroneous "\ at end of pattern" errors, introduced by
PCRE2_SUBSTITUTE_EXTENDED patch.
2015-10-17 18:29:01 +00:00
Philip.Hazel 3263d44b97 Implement --never-backslash-C 2015-10-17 13:50:56 +00:00
Philip.Hazel 5923caf05e Fix integer overflow for patterns whose minimum matching length is very, very
large.
2015-10-09 16:54:29 +00:00
Philip.Hazel 093412143d Fix compiler bug for classes such as [\W\p{Any}]. 2015-10-09 16:06:53 +00:00
Philip.Hazel 6ae5c36e83 Implement PCRE2_SUBSTITUTE_EXTENDED. 2015-10-07 17:32:48 +00:00
Philip.Hazel 0c70fb3013 Add null_context to pcre2test for testing NULL contexts. 2015-09-23 11:49:03 +00:00
Philip.Hazel 69d61e2fdb Implement PCRE2_USE_OFFSET_LIMIT and pcre2_set_offset_limit(). No documentation
yet.
2015-09-22 11:24:28 +00:00
Philip.Hazel 36db5a4d5f Implement comment lines in subject strings in pcre2test (and perltest.sh) input files. 2015-09-14 15:10:19 +00:00
Philip.Hazel 297024d65b Create a suppressions file for valgrind with JIT. 2015-09-11 16:56:47 +00:00
Philip.Hazel bb68c64c40 Implement #newline_default and adjust testdata and scripts to use it. 2015-09-08 17:01:17 +00:00
Zoltán Herczeg 357dfb7964 Fix two issues in JIT. 2015-09-02 08:35:50 +00:00
Philip.Hazel d2e87a75af Implemented PCRE2_ALT_VERBNAMES 2015-08-30 17:47:36 +00:00
Philip.Hazel fd08e11c1e Fix pcre2test splitting modifier lists at white space. 2015-08-30 14:11:15 +00:00
Philip.Hazel 170644eca3 Add ${*MARK} feature to pcre2_substitute(). 2015-08-29 17:13:09 +00:00
Zoltán Herczeg e40bc47ae2 Fixed a corner case of range optimization in JIT. 2015-08-26 13:35:58 +00:00
Philip.Hazel 69af3b39a6 Update for added test 14. 2015-08-24 16:31:30 +00:00
Philip.Hazel 3c8164817e Fix bug in RunTest.bat for new test. 2015-08-24 16:09:39 +00:00
Philip.Hazel 4facdb9613 Fix CMAKE_C_FLAGS setting 2015-08-24 16:04:32 +00:00
Zoltán Herczeg 67764372eb Fix two assertion fails in JIT found by Karl Skomski. 2015-08-24 09:25:04 +00:00
Zoltán Herczeg 81af149870 Improve first character match in JIT with SSE2 on x86. 2015-08-23 01:54:04 +00:00
Philip.Hazel ee41aa906f Runtime UTF checks now take not of the starting offset. 2015-08-18 10:34:05 +00:00
Zoltán Herczeg 1370a49dfe Match limit check added to recursion. 2015-08-14 09:36:04 +00:00
Zoltán Herczeg d98800a946 A bug which was introduced by the single character repetition optimization was fixed. 2015-08-13 11:35:38 +00:00
Zoltán Herczeg d210396121 The JIT compiler should restore the control chain for empty possessive repeats. 2015-08-11 13:20:37 +00:00
Zoltán Herczeg 3ec328fe1b The JIT compiler should not check repeats after a {0,1} repeat byte code. 2015-08-11 05:30:10 +00:00
Philip.Hazel f86d8d35fa Make (*LIMIT_MATCH=) give an error and correct offsets for limit syntax errors. 2015-08-10 16:34:17 +00:00
Zoltán Herczeg 1a3a24016d Improve the performance of starting single character repetitions in JIT. 2015-08-10 12:28:27 +00:00
Philip.Hazel 8e37b0b3c6 Fix missing non-existent reference test and bad error offsets for bad \g and \k
items.
2015-08-09 17:46:35 +00:00
Philip.Hazel e3d62b0ff8 Re-write recursion handling to fix another compiler bug and make it all less
error-prone.
2015-08-09 16:29:35 +00:00
Zoltán Herczeg c214c54ca0 The JIT compiler did not restore the control verb head in case of *THEN control verbs. 2015-08-08 05:45:17 +00:00
Philip.Hazel 537f8b1a3d Make -q override -l and -q in pcre2grep for compatibility with other greps. 2015-08-05 17:35:36 +00:00
Zoltán Herczeg 4003ae5911 Fixed an issue when \p{Any} inside an xclass did not read the current character. 2015-08-05 09:04:01 +00:00
Philip.Hazel b89a448d8d Add missing integer overflow checks. 2015-08-04 09:13:11 +00:00
Philip.Hazel 3e12e15fe1 Fix incorrect minimum matching length when pattern contains (?| groups. 2015-08-03 13:18:49 +00:00
Philip.Hazel 8269696f57 Fix issues with minimum length finding. 2015-08-01 09:11:28 +00:00
Philip.Hazel fe0a16fe8f Make EBCDIC [a-z] type ranges Perl compatible. 2015-07-24 18:18:05 +00:00
Philip.Hazel 1bcfb856f5 Fix pedantic infelicities shown up by clang and a UTF-8 checking overflow bug. 2015-07-24 13:30:50 +00:00
Philip.Hazel 83c7c24b92 Fix bugs for patterns with conditional groups starting with assertions. 2015-07-22 14:34:31 +00:00
Philip.Hazel e4d630c4af Fix (?R- not being correctly diagnosed. 2015-07-22 09:29:09 +00:00
Philip.Hazel 0046526d0e Fix incorrect compilation for repeated conditionals with only one branch. 2015-07-22 09:01:50 +00:00
Philip.Hazel 688151205d Fix not diagnosis of missing ) for callout with string argument. 2015-07-21 14:03:08 +00:00
Philip.Hazel 01c4647b02 Fix "running for ever" bug for deeply nested [: sequences. 2015-07-21 13:42:14 +00:00
Philip.Hazel 31241914a5 Fix another fuzzer bug. 2015-07-20 10:17:23 +00:00
Zoltán Herczeg f957e7bfa8 Fix infinite recursion in the JIT compiler when certain patterns when certain patterns are analysed. 2015-07-20 07:38:06 +00:00
Philip.Hazel 21b15d96f2 Fix empty comment (?#) bug 2015-07-17 16:25:21 +00:00
Philip.Hazel d702527628 Update Unicode tables to 8.0.0. 2015-07-17 15:44:51 +00:00
Philip.Hazel c1f8a7dfb3 Fix bad compilation of a possessively repeated conditional that could match an
empty string.
2015-07-17 15:11:45 +00:00
Philip.Hazel 54f59d3c05 Ignore {1} quantifiers. 2015-07-17 13:41:09 +00:00
Philip.Hazel 5cd731f314 Fix crash due to incorrect pre-pass handling of callouts with string arguments,
and tighten up the callout handling.
2015-07-16 17:47:20 +00:00
Philip.Hazel 5700a2382f Added credit for finding a bug. 2015-07-16 16:15:52 +00:00
Philip.Hazel 3326a72f6d Move pcre2_find_bracket() into its own module to avoid circular dependency. 2015-07-16 16:11:52 +00:00
Philip.Hazel 328c7920cc Fix bad processing of (?x)(*MARK) within another group. 2015-07-15 09:34:04 +00:00
Philip.Hazel 098562db96 Fix [[:>:]] when followed by parenthesis buffer overflow. 2015-07-15 09:08:12 +00:00
Philip.Hazel a972710d68 Fix typos in dftables.c for z/OS. 2015-07-08 08:30:23 +00:00
Philip.Hazel af23d161eb Remove unused redundant copy of opcode_possessify table. 2015-07-06 16:07:54 +00:00
Philip.Hazel be646cb567 Memchr() speed-up for unanchored pattern in 8-bit mode. 2015-07-06 16:05:41 +00:00
Zoltán Herczeg 6f3776bd14 Improve matching speed of patterns starting with + or * in JIT. 2015-07-03 06:46:20 +00:00
Philip.Hazel 865b2d5f6e Final file tidies for 10.20. 2015-07-02 13:18:14 +00:00
Philip.Hazel 3fc1676b26 Fix memory leak in pcre2grep. 2015-06-30 10:28:59 +00:00
Zoltán Herczeg c5f27e1c18 JIT should return with error when the compiled pattern requires more stack space than the maximum. 2015-06-28 13:31:24 +00:00
Philip.Hazel b7550b8f54 Fix [\h] in EBCDIC environments. 2015-06-22 13:40:23 +00:00
Philip.Hazel bac822ba58 Fix EBCDIC 0x41 omission and give error for \p and \P in a class when not
supported.
2015-06-19 16:41:22 +00:00
Philip.Hazel 07a8fdce25 Source and document file tidies for 10.20-RC1. 2015-06-18 16:39:25 +00:00
Zoltán Herczeg 870f975707 Single character repetition in JIT has been improved. 2015-06-16 11:37:19 +00:00
Philip.Hazel c146059c22 Make \c operate like Perl in EBCDIC environments. 2015-06-13 16:10:14 +00:00
Philip.Hazel 149aa29209 Fix \a and \e in pcre2test, and \a in pcre2_compile, on EBCDIC platforms. 2015-06-12 16:25:23 +00:00
Philip.Hazel 1d44822484 Fix empty string matching bug. 2015-06-09 17:41:45 +00:00
Philip.Hazel 1e6edd2e33 Fix table entry for \l in EBCDIC environments. 2015-06-09 16:33:44 +00:00
Philip.Hazel ff4553df08 Check for integer overflow in subroutine calls. 2015-06-08 17:51:54 +00:00
Philip.Hazel c9ac9e23ec Refactor named group handling by adding a pre-pass that generates a list of
named groups with their numbers before the rest of the compiling code is run. 
This has simplified the main compiling code and removed some sources of error.
2015-06-03 16:27:47 +00:00
Philip.Hazel 9ce0207f5c Make pcre2test give an error for \P, \p, and \X after #forbid_utf. 2015-05-20 17:44:17 +00:00
Philip.Hazel 666b3c88cf Give error for empty subpattern name such as (?''). 2015-05-19 16:48:57 +00:00
Philip.Hazel 78735a5336 Fix buffer overflow for lookbehind with mutually recursive groups. 2015-05-18 17:31:29 +00:00
Philip.Hazel 150f50b673 Fix pcre2grep compile with -std=c99. 2015-05-16 16:52:45 +00:00
Philip.Hazel 472d1c4e62 Fix sanitize=undefined warnings for left shifts of 31. 2015-05-16 16:02:46 +00:00
Philip.Hazel 6f94ece67d Fix forward reference by name to duplicate group number bug. 2015-05-16 11:01:48 +00:00
Philip.Hazel 56444e9978 Fix buffer overflow for recursive byname back reference when duplicate names
exist.
2015-05-15 17:09:01 +00:00
Philip.Hazel 92739ef5d8 Fix repeated condition check by duplicated name bug. 2015-05-08 16:32:28 +00:00
Philip.Hazel e653c5f142 Re-do previous patch and fix new forward-reference-with-quantification bugs. 2015-05-06 16:51:25 +00:00
Philip.Hazel d5191510db Fix recursive forward reference bug. 2015-05-03 16:46:56 +00:00
Philip.Hazel 1d96a5e978 Fix static linking using pkg-config issue. 2015-04-23 17:38:02 +00:00
Philip.Hazel 4d35b44b43 Fix compatibility issues for \8 and \9. 2015-04-23 17:28:39 +00:00
Philip.Hazel d1a13b8e2e Implement PCRE2_ALT_CIRCUMFLEX. 2015-04-22 17:39:25 +00:00
Philip.Hazel fe2733263d Fix replication bug in pcre2test. 2015-04-21 08:34:10 +00:00
Philip.Hazel e47a6ebe87 Implement PCRE2_NEVER_BACKSLASH_C. 2015-04-13 17:29:05 +00:00
Philip.Hazel 3e1748390b Fix very slow find_minlength when mutual recursion is present. 2015-04-13 09:13:39 +00:00
Philip.Hazel f123833bdb Fix other cases where backtracking after \C could cause a crash. 2015-04-08 16:53:22 +00:00
Philip.Hazel aa8ee3ded5 Fix backtracking bug for \C\X* in UTF mode. 2015-04-08 16:33:58 +00:00
Philip.Hazel 7105d249f6 Fix handling of global matching in pcre2test when a lookbehind assertion
contains \K.
2015-04-06 12:16:36 +00:00
Philip.Hazel cda8384a95 Fix pcre2grep loop provoked by \K in a lookbehind assertion in a non-anchored
pattern.
2015-04-03 11:14:19 +00:00
Philip.Hazel ade67323e7 Fix stack overflow instead of error diagnosis for mutual recursion within
lookbehind assertion.
2015-04-01 15:37:54 +00:00
Philip.Hazel 2f265daed0 Tidy the types of some integer variables. 2015-03-31 16:10:01 +00:00
Philip.Hazel 6a2cb0d774 Fix diagnosis of negative relative references to non-existent groups. 2015-03-31 15:01:25 +00:00
Philip.Hazel 2327a5860b Fix bad compile for possessive quantifier on group containing a subroutine
reference.
2015-03-29 17:34:04 +00:00
Philip.Hazel 63cab0dba9 Fix non-diagnosis of syntax error for (?(?< when not followed by ! or =. 2015-03-29 15:40:45 +00:00
Philip.Hazel 99bb61e903 Fix comment between recursion and quantifier bug. 2015-03-29 11:15:32 +00:00
Philip.Hazel 6b6e611b39 Fix mutual recursion inside other parentheses stack overflow bug. 2015-03-27 17:45:02 +00:00
Philip.Hazel cd85fae3c6 Fix bad memory computation for "(*UTF)[\S\V\H]" (a pattern with a negative
class (\S) and explicit wide characters).
2015-03-25 19:26:27 +00:00
Philip.Hazel a066d12022 Add recursion limit to auto-possessification code. 2015-03-25 17:01:04 +00:00
Philip.Hazel a4ceadbf47 Fix bugs when (?!) is used as a condition. 2015-03-24 10:21:34 +00:00
Zoltán Herczeg 69cda6bc70 Fix JIT compilation of conditional blocks whose assertion is converted to (*FAIL). 2015-03-24 08:43:52 +00:00
Philip.Hazel 4e61019ffe Implement pcre2_callout_enumerate(). 2015-03-23 15:52:08 +00:00
Philip.Hazel b15698b077 Fix data overrun for /(?(?C)/ 2015-03-20 12:37:28 +00:00
Zoltán Herczeg e43b3d435b Adding more callout with string tests. 2015-03-12 11:49:29 +00:00
Philip.Hazel d0cf279d87 Code for callouts with string arguments. Documentation not yet updated. 2015-03-11 17:44:16 +00:00
Philip.Hazel b6bc8c6328 Final file tidies for 10.10 release. 2015-03-06 15:08:29 +00:00
Philip.Hazel 54396a364d Fix bad compile of patterns like /[A-`]/i,utf where the range contains
characters with multiple other cases and the ranges adjoin.
2015-03-06 11:57:06 +00:00
Zoltán Herczeg 24a102885d Commit missing ChangeLog of r213. 2015-03-06 07:57:23 +00:00
Philip.Hazel c372df5dce Fix compile error for forward reference subroutine call within a group that
also contained a recursive back reference.
2015-03-01 18:34:05 +00:00
Philip.Hazel ea03932668 Fix "internal error" bug caused by patterns like "((?2){0,1999}())?". 2015-02-28 11:31:51 +00:00
Philip.Hazel 67800ba810 Final file tidies for 10.10-RC2. 2015-02-26 17:36:29 +00:00
Philip.Hazel 869f0271cf Arrange for "make distclean" to remove config.h, a CMake-related file. 2015-02-26 17:20:48 +00:00
Philip.Hazel 20c75b2f42 Add RunTest.bat for testing under Windows, with appropriate test files. 2015-02-25 17:19:28 +00:00
Philip.Hazel 438e51958a Fix DECL/DEFN typo that affects Windows. 2015-02-24 14:21:28 +00:00
Philip.Hazel 980a637741 Fix bugs in CMake control file. 2015-02-24 12:35:28 +00:00
Philip.Hazel d226c5ea4d Improve error message for pcre2test stack setting failure; also %ld should
really be %lu throughout.
2015-02-21 18:53:51 +00:00
Philip.Hazel 49a7eada2d Final source file tidies for 10.10-RC1 2015-02-20 11:20:40 +00:00
Philip.Hazel 3d9cc76a52 Fix bug for groups like (a)*+ (possessive, zero minimum) when the ovector was
too small to capture.
2015-02-11 10:06:09 +00:00
Philip.Hazel 154bc83cb5 Fix replacement bug in pcre2_substitute(). 2015-02-10 12:48:45 +00:00
Philip.Hazel 3e253d04de Update RunTest to handle locales better. 2015-02-07 17:45:55 +00:00
Philip.Hazel 2e36497404 Fix compile loop for subroutine reference after class such as [^\ff]. 2015-02-06 17:51:55 +00:00
Philip.Hazel ad452f4036 Give an internal error for a bad opcode during auto-possessification. This can
stop a loop when compiling an invalid UTF string with PCRE2_NO_UTF_CHECK.
2015-02-06 16:47:15 +00:00
Philip.Hazel 0011aaa712 Disallow quantification of assertion conditions, for Perl compatibility (and in
any case it didn't always work).
2015-01-28 17:31:11 +00:00
Philip.Hazel 6c8945b8d8 Fix mutual back reference recursion segfault. 2015-01-28 11:28:53 +00:00
Philip.Hazel 911b800984 Fix incorrect size calculation when a reference to a duplicate name occurs
in a part of the pattern where PCRE2_DUPNAMES is not set.
2015-01-27 17:21:32 +00:00
Philip.Hazel ca77bdd5c4 Implement (*NO_JIT) 2015-01-26 14:57:27 +00:00
Philip.Hazel 5438fc8a6a Add serialization functions and tests with updated pcre2test. Fix
PCRE2_INFO_SIZE issues.
2015-01-23 16:51:47 +00:00
Philip.Hazel d4daaf966d Fix conditional group backreference bug. 2015-01-13 16:01:24 +00:00
Philip.Hazel c702fd65c8 Final file tides for the 10.00 release. 2015-01-05 16:02:11 +00:00
Philip.Hazel 5a18651441 Add PCRE2_NO_DOTSTAR_ANCHOR and revise documentation for .* optimizing. 2015-01-02 17:09:16 +00:00
Philip.Hazel 2a5767d757 File tidies for 10.00-RC2. 2014-12-19 09:55:25 +00:00
Philip.Hazel 9fcdf2cc6f Add user data to recursion guard; get ready for RC1 (again) 2014-11-26 16:51:53 +00:00
Philip.Hazel 0acc416ed1 Final preparations for 10.00-RC1 2014-11-24 15:31:28 +00:00
Philip.Hazel eea35d0cab Fix zero-repeated assertion-as-condition bug. 2014-11-19 11:17:20 +00:00
Philip.Hazel 07f8372202 Further substitution tests (code and data), and more documentation. 2014-11-14 18:41:20 +00:00
Philip.Hazel e3e4131379 Fix bug for (*ACCEPT) inside a capturing group. 2014-11-05 16:05:19 +00:00
Philip.Hazel 44ef2c3401 Make --enable-unicode the default. 2014-11-03 18:27:56 +00:00
Philip.Hazel c3799e750f Tidy a lot of files (remove trailing spaces) 2014-10-20 17:28:49 +00:00
Philip.Hazel 7b2707fcf7 Make /()a/ set the "first character must be" data. 2014-08-30 16:21:17 +00:00
Philip.Hazel cfb78cbd53 Refactor match_ref() and fix UTF-8 caseless bug. 2014-08-27 16:59:56 +00:00
Philip.Hazel fa3b6bb251 Add non-API new features to ChangeLog. 2014-08-26 15:41:31 +00:00
Philip.Hazel 7d60040966 Add basic configuration files. 2014-02-20 19:17:05 +00:00