about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2014-07-17 19:56:27 -0400
committerRich Felker <dalias@aerifal.cx>2014-07-17 19:56:27 -0400
commit72ed3d47e567b1635a35d3c1d174c8a8b2787e30 (patch)
tree37f0f7e7c811732b5ed0fc44ab7bda6785906d3f
parenta6adb2bcd8145353943377d6119c1d7a4242bae1 (diff)
downloadmusl-72ed3d47e567b1635a35d3c1d174c8a8b2787e30.tar.gz
musl-72ed3d47e567b1635a35d3c1d174c8a8b2787e30.tar.xz
musl-72ed3d47e567b1635a35d3c1d174c8a8b2787e30.zip
fix crash in regexec for nonzero nmatch argument with REG_NOSUB
per POSIX, the nmatch and pmatch arguments are ignored when the regex
was compiled with REG_NOSUB.
-rw-r--r--src/regex/regexec.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/regex/regexec.c b/src/regex/regexec.c
index 855cef57..2e35b832 100644
--- a/src/regex/regexec.c
+++ b/src/regex/regexec.c
@@ -983,6 +983,7 @@ regexec(const regex_t *restrict preg, const char *restrict string,
   tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD;
   reg_errcode_t status;
   int *tags = NULL, eo;
+  if (tnfa->cflags & REG_NOSUB) nmatch = 0;
   if (tnfa->num_tags > 0 && nmatch > 0)
     {
       tags = xmalloc(sizeof(*tags) * tnfa->num_tags);