aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--posix/regex.c9
2 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index f241c1fa6c..feea31d2d0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+1998-11-19 Ulrich Drepper <drepper@cygnus.com>
+
+ * posix/regex.c (regex_compile): Handle extra long class names
+ correctly.
+
1998-11-19 Geoff Keating <geoffk@ozemail.com.au>
* elf/rtld.c (_dl_start): Handle weak undefined symbols in ld.so
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';