mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Update.
2004-01-14 Jakub Jelinek <jakub@redhat.com> * posix/regcomp.c (peek_token_bracket): Check remaining string length before re_string_peek_byte (x, 1). (parse_bracket_symbol): Likewise. * posix/regex_internal.h (re_string_is_single_byte_char): Return true at last byte in the string. * posix/bug-regex22.c (main): Add new test.
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
2004-01-14 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* posix/regcomp.c (peek_token_bracket): Check remaining
|
||||||
|
string length before re_string_peek_byte (x, 1).
|
||||||
|
(parse_bracket_symbol): Likewise.
|
||||||
|
* posix/regex_internal.h (re_string_is_single_byte_char): Return
|
||||||
|
true at last byte in the string.
|
||||||
|
* posix/bug-regex22.c (main): Add new test.
|
||||||
|
|
||||||
2004-01-13 Ulrich Drepper <drepper@redhat.com>
|
2004-01-13 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/generic/dl-sysdep.c: Move __libc_enable_secure into
|
* sysdeps/generic/dl-sysdep.c: Move __libc_enable_secure into
|
||||||
|
@ -95,6 +95,16 @@ main (void)
|
|||||||
regfree (&re);
|
regfree (&re);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset (&re, 0, sizeof (re));
|
||||||
|
re.translate = trans;
|
||||||
|
s = re_compile_pattern ("[[:DIGIT:]]", 11, &re);
|
||||||
|
if (s == NULL)
|
||||||
|
{
|
||||||
|
printf ("compilation of \"[[:DIGIT:]]\" pattern unexpectedly succeeded: %s\n",
|
||||||
|
s);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
|
||||||
memset (&re, 0, sizeof (re));
|
memset (&re, 0, sizeof (re));
|
||||||
re.translate = trans;
|
re.translate = trans;
|
||||||
s = re_compile_pattern ("[[:DIGIT:]]", 2, &re);
|
s = re_compile_pattern ("[[:DIGIT:]]", 2, &re);
|
||||||
|
@ -1881,7 +1881,8 @@ peek_token_bracket (token, input, syntax)
|
|||||||
}
|
}
|
||||||
#endif /* RE_ENABLE_I18N */
|
#endif /* RE_ENABLE_I18N */
|
||||||
|
|
||||||
if (c == '\\' && (syntax & RE_BACKSLASH_ESCAPE_IN_LISTS))
|
if (c == '\\' && (syntax & RE_BACKSLASH_ESCAPE_IN_LISTS)
|
||||||
|
&& re_string_cur_idx (input) + 1 < re_string_length (input))
|
||||||
{
|
{
|
||||||
/* In this case, '\' escape a character. */
|
/* In this case, '\' escape a character. */
|
||||||
unsigned char c2;
|
unsigned char c2;
|
||||||
@ -1895,7 +1896,10 @@ peek_token_bracket (token, input, syntax)
|
|||||||
{
|
{
|
||||||
unsigned char c2;
|
unsigned char c2;
|
||||||
int token_len;
|
int token_len;
|
||||||
c2 = re_string_peek_byte (input, 1);
|
if (re_string_cur_idx (input) + 1 < re_string_length (input))
|
||||||
|
c2 = re_string_peek_byte (input, 1);
|
||||||
|
else
|
||||||
|
c2 = 0;
|
||||||
token->opr.c = c2;
|
token->opr.c = c2;
|
||||||
token_len = 2;
|
token_len = 2;
|
||||||
switch (c2)
|
switch (c2)
|
||||||
@ -3268,14 +3272,18 @@ parse_bracket_symbol (elem, regexp, token)
|
|||||||
{
|
{
|
||||||
unsigned char ch, delim = token->opr.c;
|
unsigned char ch, delim = token->opr.c;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
if (re_string_eoi(regexp))
|
||||||
|
return REG_EBRACK;
|
||||||
for (;; ++i)
|
for (;; ++i)
|
||||||
{
|
{
|
||||||
if (re_string_eoi(regexp) || i >= BRACKET_NAME_BUF_SIZE)
|
if (i >= BRACKET_NAME_BUF_SIZE)
|
||||||
return REG_EBRACK;
|
return REG_EBRACK;
|
||||||
if (token->type == OP_OPEN_CHAR_CLASS)
|
if (token->type == OP_OPEN_CHAR_CLASS)
|
||||||
ch = re_string_fetch_byte_case (regexp);
|
ch = re_string_fetch_byte_case (regexp);
|
||||||
else
|
else
|
||||||
ch = re_string_fetch_byte (regexp);
|
ch = re_string_fetch_byte (regexp);
|
||||||
|
if (re_string_eoi(regexp))
|
||||||
|
return REG_EBRACK;
|
||||||
if (ch == delim && re_string_peek_byte (regexp, 0) == ']')
|
if (ch == delim && re_string_peek_byte (regexp, 0) == ']')
|
||||||
break;
|
break;
|
||||||
elem->opr.name[i] = ch;
|
elem->opr.name[i] = ch;
|
||||||
|
@ -408,7 +408,7 @@ static unsigned char re_string_fetch_byte_case (re_string_t *pstr)
|
|||||||
#define re_string_first_byte(pstr, idx) \
|
#define re_string_first_byte(pstr, idx) \
|
||||||
((idx) == (pstr)->valid_len || (pstr)->wcs[idx] != WEOF)
|
((idx) == (pstr)->valid_len || (pstr)->wcs[idx] != WEOF)
|
||||||
#define re_string_is_single_byte_char(pstr, idx) \
|
#define re_string_is_single_byte_char(pstr, idx) \
|
||||||
((pstr)->wcs[idx] != WEOF && ((pstr)->valid_len == (idx) \
|
((pstr)->wcs[idx] != WEOF && ((pstr)->valid_len == (idx) + 1 \
|
||||||
|| (pstr)->wcs[(idx) + 1] != WEOF))
|
|| (pstr)->wcs[(idx) + 1] != WEOF))
|
||||||
#define re_string_eoi(pstr) ((pstr)->stop <= (pstr)->cur_idx)
|
#define re_string_eoi(pstr) ((pstr)->stop <= (pstr)->cur_idx)
|
||||||
#define re_string_cur_idx(pstr) ((pstr)->cur_idx)
|
#define re_string_cur_idx(pstr) ((pstr)->cur_idx)
|
||||||
|
Reference in New Issue
Block a user