diff options
author | Steve Bennett <steveb@workware.net.au> | 2011-06-28 07:24:07 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2011-06-28 07:24:07 +1000 |
commit | 6ad813f67cad987471e4ab607e69e5dbaa74082a (patch) | |
tree | 90ecb523d1a43a5c95159c7e891cc3fffa33151b /jimregexp.c | |
parent | 04215dbf0b2f002bba05c91a1d4690aae0d671b7 (diff) | |
download | jimtcl-6ad813f67cad987471e4ab607e69e5dbaa74082a.zip jimtcl-6ad813f67cad987471e4ab607e69e5dbaa74082a.tar.gz jimtcl-6ad813f67cad987471e4ab607e69e5dbaa74082a.tar.bz2 |
Fix builtin regexp for memory overwrite
Reported-By: Spencer Oliver <spen@spen-soft.co.uk>
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jimregexp.c')
-rw-r--r-- | jimregexp.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/jimregexp.c b/jimregexp.c index 8da9347..7725487 100644 --- a/jimregexp.c +++ b/jimregexp.c @@ -506,9 +506,11 @@ static int *regpiece(regex_t *preg, int *flagp) else { next = reginsert(preg, flags & SIMPLE ? REP: REPX, 5, ret); } - ret[2] = max; - ret[3] = min; - ret[4] = 0; + if (preg->regcode != ®dummy) { + ret[2] = max; + ret[3] = min; + ret[4] = 0; + } *flagp = (min) ? (WORST|HASWIDTH) : (WORST|SPSTART); |