aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jimregexp.c4
-rw-r--r--tests/regexp.test4
2 files changed, 8 insertions, 0 deletions
diff --git a/jimregexp.c b/jimregexp.c
index 49c04af..0b6ccf6 100644
--- a/jimregexp.c
+++ b/jimregexp.c
@@ -792,6 +792,10 @@ static int regatom(regex_t *preg, int *flagp)
for (cc = 0; cc < CC_NUM; cc++) {
n = strlen(character_class[cc]);
if (strncmp(pattern, character_class[cc], n) == 0) {
+ if (pattern[n] != ']') {
+ preg->err = REG_ERR_UNMATCHED_BRACKET;
+ return 0;
+ }
/* Found a character class */
pattern += n + 1;
break;
diff --git a/tests/regexp.test b/tests/regexp.test
index 356fa66..2c91ac7 100644
--- a/tests/regexp.test
+++ b/tests/regexp.test
@@ -754,4 +754,8 @@ test reg-31.2 {scanner not reset in failed optional group} {
regexp -inline {^(?:(-)(?:(\w[\w-]*)\|)?)?(\w[\w-]*)$} -debug
} {-debug - {} debug}
+test reg-31.2 {invalid digit check in class} -body {
+ regexp {[[:digit:\0]} 1
+} -returnCodes error -result {couldn't compile regular expression pattern: brackets [] not balanced}
+
testreport