This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hi!
Just 2 small things:
a) re_string_reconstruct ensures pstr->valid_len == pstr->len
for mb_cur_max == 1 !icase !trans (ie. the simplest case
where mbs/mbs_case simply point at raw_mbs + raw_mbs_idx).
Setting it to anything else is wrong (valid_len could
well be set to value bigger than len, so routines which
check valid_len could fall off the cliff).
b) extend_buffers calls re_string_realloc_buffers (pstr, pstr->bufs_len * 2)
(ie. doubles the size of buffers). But re_string_realloc_buffers
also sets pstr->bufs_len to the new size, so when extend_buffers
later uses pstr->bufs_len * 2, it is IMHO twice as many as needed.
Removing * 2 is not right (efence showed up the code can read/write
state_log[bufs_len]), but I think + 1 matches the initial state_log
allocation (which is dfa->nodes_len + 1, not dfa->nodes_len * 2).
2003-11-19 Jakub Jelinek <jakub@redhat.com>
* posix/regexec.c (extend_buffers): Don't allocate
twice as big state_log as needed. Don't modify pstr->valid_len
for mb_cur_max == 1 !icase !trans.
--- libc/posix/regexec.c.jj 2003-11-19 10:24:36.000000000 +0100
+++ libc/posix/regexec.c 2003-11-19 17:45:51.000000000 +0100
@@ -3840,7 +3840,7 @@ extend_buffers (mctx)
/* And double the length of state_log. */
re_dfastate_t **new_array;
new_array = re_realloc (mctx->state_log, re_dfastate_t *,
- pstr->bufs_len * 2);
+ pstr->bufs_len + 1);
if (BE (new_array == NULL, 0))
return REG_ESPACE;
mctx->state_log = new_array;
@@ -3866,8 +3866,6 @@ extend_buffers (mctx)
{
if (pstr->trans != NULL)
re_string_translate_buffer (pstr);
- else
- pstr->valid_len = pstr->bufs_len;
}
}
return REG_NOERROR;
Jakub
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |