summaryrefslogtreecommitdiffstats
path: root/lib/libc/regex
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2007-03-05 03:07:36 +0000
committerdelphij <delphij@FreeBSD.org>2007-03-05 03:07:36 +0000
commit01efaf95b838e30c8325821233149b2c72972216 (patch)
treeef402974e3580e341d9bc720f4799b0afeb69c42 /lib/libc/regex
parent7df8cf04c70d8ad6415df01c97858a086f2b1426 (diff)
downloadFreeBSD-src-01efaf95b838e30c8325821233149b2c72972216.zip
FreeBSD-src-01efaf95b838e30c8325821233149b2c72972216.tar.gz
Avoid infinite recursion on:
echo "foo foo bar bar bar baz" | sed 's/\([^ ]*\)\( *\1\)*/\1/g' Obtained from: OpenBSD via NetBSD (rev. 1.18)
Diffstat (limited to 'lib/libc/regex')
-rw-r--r--lib/libc/regex/engine.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/libc/regex/engine.c b/lib/libc/regex/engine.c
index b8c8f49..9c09efa 100644
--- a/lib/libc/regex/engine.c
+++ b/lib/libc/regex/engine.c
@@ -674,6 +674,8 @@ sopno lev; /* PLUS nesting level */
return(NULL);
assert(m->pmatch[i].rm_so != -1);
len = m->pmatch[i].rm_eo - m->pmatch[i].rm_so;
+ if (len == 0)
+ return(NULL);
assert(stop - m->beginp >= len);
if (sp > stop - len)
return(NULL); /* not enough left to match */
OpenPOWER on IntegriCloud