aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2011-06-28 07:24:07 +1000
committerSteve Bennett <steveb@workware.net.au>2011-06-28 07:24:07 +1000
commit6ad813f67cad987471e4ab607e69e5dbaa74082a (patch)
tree90ecb523d1a43a5c95159c7e891cc3fffa33151b
parent04215dbf0b2f002bba05c91a1d4690aae0d671b7 (diff)
downloadjimtcl-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>
-rw-r--r--autosetup/jimsh0.c8
-rw-r--r--jimregexp.c8
2 files changed, 10 insertions, 6 deletions
diff --git a/autosetup/jimsh0.c b/autosetup/jimsh0.c
index 49b0ed8..c2e9435 100644
--- a/autosetup/jimsh0.c
+++ b/autosetup/jimsh0.c
@@ -22317,9 +22317,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 != &regdummy) {
+ ret[2] = max;
+ ret[3] = min;
+ ret[4] = 0;
+ }
*flagp = (min) ? (WORST|HASWIDTH) : (WORST|SPSTART);
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 != &regdummy) {
+ ret[2] = max;
+ ret[3] = min;
+ ret[4] = 0;
+ }
*flagp = (min) ? (WORST|HASWIDTH) : (WORST|SPSTART);