diff options
author | Steve Bennett <steveb@workware.net.au> | 2017-05-12 12:14:00 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2017-05-12 13:02:17 +1000 |
commit | edf6b0fce509133dccfeda71227240e60606f100 (patch) | |
tree | 4f469fb6bb82e751c988426c2ba2c112ad513bfa | |
parent | c8e41c8a8a0d6cae87f89a6b26b336b2df8099d2 (diff) | |
download | jimtcl-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.c | 4 | ||||
-rw-r--r-- | regtest.tcl | 5 |
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 ---" |