fix crash in regexec for nonzero nmatch argument with REG_NOSUB
authorRich Felker <dalias@aerifal.cx>
Thu, 17 Jul 2014 23:56:27 +0000 (19:56 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 17 Jul 2014 23:56:27 +0000 (19:56 -0400)
per POSIX, the nmatch and pmatch arguments are ignored when the regex
was compiled with REG_NOSUB.

src/regex/regexec.c

index 855cef573ae94a12370492a4da433a39dff37856..2e35b832803fd4199c2b19024be4982aa951fb7c 100644 (file)
@@ -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);