aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2017-05-12 12:14:00 +1000
committerSteve Bennett <steveb@workware.net.au>2017-05-12 13:02:17 +1000
commitedf6b0fce509133dccfeda71227240e60606f100 (patch)
tree4f469fb6bb82e751c988426c2ba2c112ad513bfa
parentc8e41c8a8a0d6cae87f89a6b26b336b2df8099d2 (diff)
downloadjimtcl-edf6b0fce509133dccfeda71227240e60606f100.zip
jimtcl-edf6b0fce509133dccfeda71227240e60606f100.tar.gz
jimtcl-edf6b0fce509133dccfeda71227240e60606f100.tar.bz2
regexp: Fix bad memory access on missing close brace
For counted repetitions Reported-by: Ryan Whitworth <me@ryanwhitworth.com> Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jimregexp.c4
-rw-r--r--regtest.tcl5
2 files changed, 9 insertions, 0 deletions
diff --git a/jimregexp.c b/jimregexp.c
index b256e76..cf31558 100644
--- a/jimregexp.c
+++ b/jimregexp.c
@@ -477,6 +477,10 @@ static int regpiece(regex_t *preg, int *flagp)
if (*end == '}') {
max = min;
}
+ else if (*end == '\0') {
+ preg->err = REG_ERR_UNMATCHED_BRACES;
+ return 0;
+ }
else {
preg->regparse = end;
max = strtoul(preg->regparse + 1, &end, 10);
diff --git a/regtest.tcl b/regtest.tcl
index df25d13..033f430 100644
--- a/regtest.tcl
+++ b/regtest.tcl
@@ -315,6 +315,11 @@ puts "TEST 43 PASSED"
lsort -unique {a b c d}
puts "TEST 44 PASSED"
+# REGTEST 45
+# regexp with missing close brace for count
+catch [list regexp "u{0" x]
+puts "TEST 45 PASSED"
+
# TAKE THE FOLLOWING puts AS LAST LINE
puts "--- ALL TESTS PASSED ---"