diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2016-04-23 14:20:16 -0700 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2016-04-23 14:20:16 -0700 |
commit | 222dea055c622822ff24a2fa14564231bf3323d0 (patch) | |
tree | cbf00fab95aaa766805ea39be6742f7d4bbc8646 | |
parent | e1c745a0dca56afb9cfcace1ef59449152290188 (diff) | |
download | zsh-222dea055c622822ff24a2fa14564231bf3323d0.tar.gz zsh-222dea055c622822ff24a2fa14564231bf3323d0.tar.xz zsh-222dea055c622822ff24a2fa14564231bf3323d0.zip |
Mikael Berthe: 38307: PCRE segfault when parenthesized group matches nothing
unposted: regression test for 38307
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Src/Modules/pcre.c | 2 | ||||
-rw-r--r-- | Test/V07pcre.ztst | 7 |
3 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 4fa96e7fa..e8bfad8c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2016-04-23 Barton E. Schaefer <schaefer@zsh.org> + + * Mikael Berthe: 38307: Src/Modules/pcre.c: PCRE segfault when + parenthesized group matches nothing (cf. 37515) + + * unposted: Test/V07pcre.ztst: regression test for 38307 + 2016-04-22 Barton E. Schaefer <schaefer@zsh.org> * 38306: Src/builtin.c: in printf formats, treat a missing diff --git a/Src/Modules/pcre.c b/Src/Modules/pcre.c index e23ab57f5..5fd67963d 100644 --- a/Src/Modules/pcre.c +++ b/Src/Modules/pcre.c @@ -228,7 +228,7 @@ zpcre_get_substrings(char *arg, int *ovec, int ret, char *matchvar, /* Find the start offset */ MB_CHARINIT(); leftlen = ipair[0]; - while (leftlen) { + while (leftlen > 0) { offs++; clen = MB_CHARLEN(ptr, leftlen); ptr += clen; diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst index 39077564c..ad1770712 100644 --- a/Test/V07pcre.ztst +++ b/Test/V07pcre.ztst @@ -130,3 +130,10 @@ 0:pcre_match -b and pcre_match -n >78884; ZPCRE_OP: 25 30 >90210; ZPCRE_OP: 31 36 + +# Subshell because crash on failure + ( setopt re_match_pcre + [[ test.txt =~ '^(.*_)?(test)' ]] + echo $match[2] ) +0:regression for segmentation fault, workers/38307 +>test |