diff options
author | delphij <delphij@FreeBSD.org> | 2007-03-05 03:07:36 +0000 |
---|---|---|
committer | delphij <delphij@FreeBSD.org> | 2007-03-05 03:07:36 +0000 |
commit | 01efaf95b838e30c8325821233149b2c72972216 (patch) | |
tree | ef402974e3580e341d9bc720f4799b0afeb69c42 | |
parent | 7df8cf04c70d8ad6415df01c97858a086f2b1426 (diff) | |
download | FreeBSD-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)
-rw-r--r-- | lib/libc/regex/engine.c | 2 |
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 */ |