diff options
author | ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069> | 2017-05-06 16:56:07 +0000 |
---|---|---|
committer | ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069> | 2017-05-06 16:56:07 +0000 |
commit | fcc05a01a8c1f87b3286a27dffc508dd5b0ced31 (patch) | |
tree | f831e5389f5692d454b30b0c3a46826acee357b2 | |
parent | b5c23b406b97caab0665750d1c6d2ea628f46116 (diff) | |
download | pcre2-fcc05a01a8c1f87b3286a27dffc508dd5b0ced31.tar.gz |
Fix crash when more than one kind of "push" was set in pcre2test.
git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@767 6239d852-aaf2-0410-a92c-79f79f948069
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/pcre2test.c | 15 | ||||
-rw-r--r-- | testdata/testinput20 | 44 | ||||
-rw-r--r-- | testdata/testoutput20 | 47 |
4 files changed, 67 insertions, 42 deletions
@@ -153,6 +153,9 @@ tests to improve coverage. 30. Implement (?n: for PCRE2_NO_AUTO_CAPTURE, because Perl now has this. +31. If more than one of "push", "pushcopy", or "pushtablescopy" were set in +pcre2test, a crash could occur. + Version 10.23 14-February-2017 ------------------------------ diff --git a/src/pcre2test.c b/src/pcre2test.c index a7fe7c0..cab604f 100644 --- a/src/pcre2test.c +++ b/src/pcre2test.c @@ -721,12 +721,15 @@ the first control word. Note that CTL_POSIX_NOSUB is always accompanied by CTL_POSIX, so it doesn't need its own entries. */ static uint32_t exclusive_pat_controls[] = { - CTL_POSIX | CTL_HEXPAT, - CTL_POSIX | CTL_PUSH, - CTL_POSIX | CTL_PUSHCOPY, - CTL_POSIX | CTL_PUSHTABLESCOPY, - CTL_POSIX | CTL_USE_LENGTH, - CTL_EXPAND | CTL_HEXPAT }; + CTL_POSIX | CTL_HEXPAT, + CTL_POSIX | CTL_PUSH, + CTL_POSIX | CTL_PUSHCOPY, + CTL_POSIX | CTL_PUSHTABLESCOPY, + CTL_POSIX | CTL_USE_LENGTH, + CTL_PUSH | CTL_PUSHCOPY, + CTL_PUSH | CTL_PUSHTABLESCOPY, + CTL_PUSHCOPY | CTL_PUSHTABLESCOPY, + CTL_EXPAND | CTL_HEXPAT }; /* Data controls that are mutually exclusive. At present these are all in the first control word. */ diff --git a/testdata/testinput20 b/testdata/testinput20 index c87a07e..71f39ae 100644 --- a/testdata/testinput20 +++ b/testdata/testinput20 @@ -31,20 +31,20 @@ #load testsaved2 #pop info - foofoo + foofoo barbar - + #pop mark C -\= Expect no match - D - +\= Expect no match + D + #pop - AmanaplanacanalPanama + AmanaplanacanalPanama #pop info metcalfe 33 - + # Check for an error when different tables are used. /abc/push,tables=1 @@ -59,30 +59,30 @@ #pop should give an error pqr - + /abcd/pushcopy abcd - + #pop - abcd + abcd #pop should give an error /abcd/push #popcopy abcd - + #pop - abcd - + abcd + /abcd/push #save testsaved1 #pop should give an error #load testsaved1 -#popcopy +#popcopy abcd - + #pop abcd @@ -91,10 +91,18 @@ /abcd/pushtablescopy abcd -#popcopy +#popcopy abcd - + #pop - abcd + abcd + +# Must only specify one of these + +//push,pushcopy + +//push,pushtablescopy + +//pushcopy,pushtablescopy # End of testinput20 diff --git a/testdata/testoutput20 b/testdata/testoutput20 index db99866..d6265fd 100644 --- a/testdata/testoutput20 +++ b/testdata/testoutput20 @@ -40,25 +40,25 @@ Named capturing subpatterns: Options: dupnames Starting code units: b f Subject length lower bound = 6 - foofoo + foofoo 0: foofoo 1: foo barbar 0: barbar 1: <unset> 2: bar - + #pop mark C 0: C 1: C MK: A -\= Expect no match - D +\= Expect no match + D No match, mark = A - + #pop - AmanaplanacanalPanama + AmanaplanacanalPanama 0: AmanaplanacanalPanama 1: <unset> 2: <unset> @@ -78,7 +78,7 @@ Subject length lower bound = 3 0: metcalfe 33 1: metcalfe 2: 33 - + # Check for an error when different tables are used. /abc/push,tables=1 @@ -97,13 +97,13 @@ Serialization failed: error -30: patterns do not all use the same character tabl #pop should give an error ** Can't pop off an empty stack pqr - + /abcd/pushcopy abcd 0: abcd - + #pop - abcd + abcd 0: abcd #pop should give an error @@ -113,21 +113,21 @@ Serialization failed: error -30: patterns do not all use the same character tabl #popcopy abcd 0: abcd - + #pop - abcd + abcd 0: abcd - + /abcd/push #save testsaved1 #pop should give an error ** Can't pop off an empty stack #load testsaved1 -#popcopy +#popcopy abcd 0: abcd - + #pop abcd 0: abcd @@ -139,12 +139,23 @@ Serialization failed: error -30: patterns do not all use the same character tabl abcd 0: abcd -#popcopy +#popcopy abcd 0: abcd - + #pop - abcd + abcd 0: abcd +# Must only specify one of these + +//push,pushcopy +** Not allowed together: push pushcopy + +//push,pushtablescopy +** Not allowed together: push pushtablescopy + +//pushcopy,pushtablescopy +** Not allowed together: pushcopy pushtablescopy + # End of testinput20 |