diff options
Diffstat (limited to 'posix/regex.c')
-rw-r--r-- | posix/regex.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/posix/regex.c b/posix/regex.c index 5f8e38c791..ba01f73508 100644 --- a/posix/regex.c +++ b/posix/regex.c @@ -2210,10 +2210,13 @@ regex_compile (pattern, size, syntax, bufp) for (;;) { PATFETCH (c); - if ((c == ':' && *p == ']') || p == pend - || c1 == CHAR_CLASS_MAX_LENGTH) + if ((c == ':' && *p == ']') || p == pend) break; - str[c1++] = c; + if (c1 < CHAR_CLASS_MAX_LENGTH) + str[c1++] = c; + else + /* This is in any case an invalid class name. */ + str[0] = '\0'; } str[c1] = '\0'; |