Philip.Hazel
04da0725f3
Remove obsolete OP_ONCE_NC internal opcode.
2017-03-11 17:59:23 +00:00
Philip.Hazel
26e92bc554
Fix crash for pattern with very many captures. Fixes oss-fuzz issue 783.
2017-03-10 16:34:54 +00:00
Philip.Hazel
20804215a8
Code for new interpreter (build system and documentation still to be done).
2017-03-09 16:23:28 +00:00
Philip.Hazel
f6f7c9148f
Check malloc returns in pcre2test.
2017-02-23 17:05:43 +00:00
Philip.Hazel
3fb194afa4
Cache group minima to speed up studying of pathological patterns. Fixes
...
oss-fuzz #557 .
2017-02-10 16:33:15 +00:00
Philip.Hazel
4311f49d0e
Fix \g+ bug when the number that follows is too big.
2017-01-31 17:15:30 +00:00
Philip.Hazel
62659dd2f3
Add callout_error to pcre2test and stop the fuzzer after 100 callouts.
2016-12-28 15:05:48 +00:00
Philip.Hazel
f676362977
Fix issue with \Q\E after a callout before an assertion condition.
2016-12-28 12:26:12 +00:00
Philip.Hazel
fdf7946ee0
Fail hyphen after POSIX character class.
2016-12-27 11:50:28 +00:00
Philip.Hazel
6c48775955
Fix mis-parsing of a conditional group with callout but a question mark where
...
the assertion should start.
2016-12-23 18:34:10 +00:00
Philip.Hazel
d15aab4d17
More refactoring: keep track of empty branches during compiling, replacing a
...
post-compile scan.
2016-12-23 17:09:37 +00:00
Philip.Hazel
a984029d80
Fix incorrect internal error for very complicated back reference handling.
2016-12-20 16:47:41 +00:00
Philip.Hazel
f77339a3ca
Fix \Q\E quantification bug.
2016-12-11 16:42:29 +00:00
Philip.Hazel
7914fa82a9
Fix OOB error in substitute with start offset longer than length.
2016-12-09 18:19:38 +00:00
Philip.Hazel
bcad1aa4f6
Fix NULL defer in extended substition for \p, \P, or \X.
2016-12-09 16:57:51 +00:00
Philip.Hazel
0e04c156a4
Fix buffer overflow in partial match test for CRLF in empty buffer.
2016-12-08 17:55:26 +00:00
Philip.Hazel
14f6b9fb03
Fix \Q...\E bug in (*VERB) name when PCRE2_ALT_VERBNAMES and PCRE2_AUTO_CALLOUT
...
were both specified.
2016-11-27 16:14:33 +00:00
Philip.Hazel
7390ce13f6
Quantifiers following (*VERB)s were not being diagnosed.
2016-11-25 10:37:23 +00:00
Philip.Hazel
4c69f50e69
Fix bad behaviour for subroutine call in lookbehind when the called subroutine
...
contained an option setting such as (?s) and PCRE2_ANCHORED was set.
2016-11-23 17:17:57 +00:00
Philip.Hazel
43e541adda
Update test for previous pcre2test update (overlooked).
2016-11-22 12:31:03 +00:00
Philip.Hazel
e0cccdd028
Fix overrun bug caused by conditional with assertion using too much memory.
2016-11-18 18:59:37 +00:00
Philip.Hazel
21c084125c
Fix global overflow bug for get/copy names in pcre2test.
2016-11-10 17:08:27 +00:00
Philip.Hazel
02e8b83bed
Test update.
2016-11-04 16:40:08 +00:00
Philip.Hazel
e533e0f774
Fix overrun for unterminated number after \g'
2016-11-04 11:05:21 +00:00
Philip.Hazel
12a6d697fe
Fix read beyond unterminated quantifier at end of pattern.
2016-11-01 12:12:45 +00:00
Philip.Hazel
24ab24fde0
Fix bad memory calculation when the first branch of a lookbehind is of zero
...
length.
2016-10-28 16:09:08 +00:00
Philip.Hazel
2821076981
Diagnose an overall recursion (?0) inside a lookbehind as an error.
2016-10-23 17:05:09 +00:00
Philip.Hazel
a22c5e4204
Fix optimization bugs when pattern starts with lookahead.
2016-10-18 11:22:40 +00:00
Philip.Hazel
bc3e331efd
Add test for bug already fixed by the refactoring.
2016-10-13 16:08:08 +00:00
Philip.Hazel
99264dfc23
Major refactoring of pcre2_compile.c; see ChangeLog and HACKING.
2016-10-02 16:01:01 +00:00
Philip.Hazel
9b741ad59d
Detect overflow in pcre2test pattern and subject repetition counts.
2016-07-06 08:42:50 +00:00
Philip.Hazel
0a29ecbe02
Return an error code when pcre2_get_error_message() does not recognize an error
...
code, and add a pcre2test facility for testing this.
2016-06-17 11:30:27 +00:00
Philip.Hazel
94e07de498
Detect missing closing parentheses during the pre-pass.
2016-02-13 15:30:29 +00:00
Philip.Hazel
78aff8c80f
Fix pcre2test loop when a callout is in an initial lookbehind.
2016-02-06 16:40:59 +00:00
Philip.Hazel
9f75a0f92a
Detect unmatched closing parentheses in the pre-scan to avoid giving incorrect
...
error messages.
2016-02-02 17:22:55 +00:00
Philip.Hazel
8febd27344
Two pcre2test extensions: quoted literal substrings in hex patterns and
...
detection of unsupported binary zeros in file input.
2016-01-29 18:16:59 +00:00
Philip.Hazel
57c44eec15
Fix printing of *MARK names containing binary zeroes in pcre2test.
2015-12-16 18:44:24 +00:00
Philip.Hazel
255974ed28
Some tests were in the wrong files.
2015-12-15 18:21:49 +00:00
Philip.Hazel
35e0f55783
Implement PCRE2_SUBSTITUTE_{OVERFLOW_LENGTH,UNKNOWN_UNSET}.
2015-12-12 18:45:40 +00:00
Philip.Hazel
b34dbecb75
Harden pcre2test against ridiculously large values in modifiers and command
...
line arguments.
2015-12-05 18:17:41 +00:00
Philip.Hazel
2f684a60ed
Implement PCRE2_SUBSTITUTE_UNSET_EMPTY.
2015-12-04 18:39:08 +00:00
Philip.Hazel
a7c9027ae6
Fix \) in (*verb) "name" bug.
2015-12-03 18:36:36 +00:00
Philip.Hazel
1f9b2a2e4b
Fix /x bug when pattern starts with whitespace followed by (?-x).
2015-12-03 16:58:31 +00:00
Philip.Hazel
d71b70cdf7
Fix issues with NULL characters in patterns.
2015-12-02 17:39:26 +00:00
Philip.Hazel
7b1d9549c6
Fix extended *verb name ignored terminating whitespace bug.
2015-12-01 17:41:24 +00:00
Philip.Hazel
12fc152074
Fix empty \Q\E between an item and a qualifier in auto-callout mode.
2015-11-30 17:31:16 +00:00
Philip.Hazel
de6603d294
Fix bad behaviour for isolated \E before qualifier with auto-callout.
2015-11-27 17:34:36 +00:00
Philip.Hazel
2eb24e2dac
Fix auto-callout with (?# comment bug.
2015-11-25 18:46:35 +00:00
Philip.Hazel
c7e9887a65
Make startoffset a synonym of offset in pcre2test.
2015-11-21 16:10:24 +00:00
Philip.Hazel
6650a2fd9a
Fix single-character POSIX class bug in UCP mode.
2015-11-17 17:13:43 +00:00
Zoltán Herczeg
c0d0f2f65e
Fix two offset_limit bug in JIT.
2015-11-16 08:30:48 +00:00
Philip.Hazel
5ced14bf24
Implement PCRE2_INFO_HASBACKSLASHC.
2015-11-14 17:28:19 +00:00
Philip.Hazel
5dce5b3727
Add a new test.
2015-11-13 17:16:28 +00:00
Philip.Hazel
299e587f9b
Don't split CRLF in pcre2_substitute() when it's a valid newline sequence.
2015-11-13 16:52:26 +00:00
Philip.Hazel
7bf5d9efd0
Small optimizations in pcre2_study.c
2015-11-11 09:42:26 +00:00
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
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
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
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
766fbc81d0
Fix PCRE2_NO_AUTO_CAPTURE bug.
2015-10-25 17:35:34 +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
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
be7366f6f0
Tidied up a lot of comments in the test files.
2015-09-16 16:49:48 +00:00
Philip.Hazel
bb68c64c40
Implement #newline_default and adjust testdata and scripts to use it.
2015-09-08 17:01:17 +00:00
Philip.Hazel
cdf07ab585
Complete escape processing for PCRE2_ALT_VERBNAMES
2015-09-01 17:32:42 +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
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
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
b89a448d8d
Add missing integer overflow checks.
2015-08-04 09:13:11 +00:00
Philip.Hazel
76a2e62669
Maintenance on tests for Perl compatibility
2015-08-03 17:25:55 +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
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
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
Philip.Hazel
21b15d96f2
Fix empty comment (?#) bug
2015-07-17 16:25:21 +00:00
Philip.Hazel
7b4b853b81
Correct test for previous bugfix.
2015-07-17 15:18:17 +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
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
1d44822484
Fix empty string matching bug.
2015-06-09 17:41:45 +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
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
ba8f1d8002
Maintenance on test after running ManyConfigTests.
2015-05-17 17:44:21 +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
c420d11041
Fix bug in previous fix.
2015-05-05 18:46:51 +00:00
Philip.Hazel
d5191510db
Fix recursive forward reference bug.
2015-05-03 16:46:56 +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
7105d249f6
Fix handling of global matching in pcre2test when a lookbehind assertion
...
contains \K.
2015-04-06 12:16:36 +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
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
6b6e611b39
Fix mutual recursion inside other parentheses stack overflow bug.
2015-03-27 17:45:02 +00:00
Philip.Hazel
a4ceadbf47
Fix bugs when (?!) is used as a condition.
2015-03-24 10:21:34 +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
Philip.Hazel
aa8d7342da
Test binary zero in callout strings; change offset to PCRE2_SIZE; some
...
documentation tidies.
2015-03-16 15:38:26 +00:00
Philip.Hazel
15e034c9c2
Add string offset within the pattern to the data passed to a callout with a
...
string argument.
2015-03-14 12:20:18 +00:00
Philip.Hazel
b2c67082bd
Fix crash in pcre2test for some callouts with string arguments.
2015-03-14 10:47:43 +00:00
Philip.Hazel
baf08a3d37
Support manual callout with string argument at start of condition.
2015-03-12 17:00:18 +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
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
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
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
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
d4daaf966d
Fix conditional group backreference bug.
2015-01-13 16:01:24 +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
b8dbae1474
Improvements for substring handling with partial matches.
2014-12-22 17:33:10 +00:00
Philip.Hazel
cb8865d247
Update and improve substring handling and its documentation.
2014-12-14 17:17:06 +00:00
Philip.Hazel
a85d15cbd1
Improve interfaces to substring functions, and fix bugs.
2014-12-13 17:43:26 +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
c19bd9a377
Substitution tests and documentation.
2014-11-12 16:57:56 +00:00
Philip.Hazel
f1c6ee730a
Code for pcre2_substitute(), and tests.
2014-11-11 10:19:23 +00:00
Philip.Hazel
8aa511a98b
Improve test coverage; minor typo in JIT test and other minor buglets fixed.
2014-10-31 12:34:34 +00:00
Philip.Hazel
26cd0bccb3
Partial documentation and partial code tweaks.
2014-10-14 16:23:57 +00:00
Philip.Hazel
b6e793f343
The tests all run clean with JIT.
2014-10-11 15:56:25 +00:00
Philip.Hazel
d961132ae1
Fix match_unset_backref bug.
2014-10-10 16:42:03 +00:00
Philip.Hazel
623b497851
Fix "first code unit" bug.
2014-10-10 16:16:44 +00:00