diff options
author | jim winstead <jimw@php.net> | 2002-01-05 01:59:11 +0000 |
---|---|---|
committer | jim winstead <jimw@php.net> | 2002-01-05 01:59:11 +0000 |
commit | 9a171d03e84af05f135a2e2afe8a9008bc79e3a1 (patch) | |
tree | afdebdc264ba692437bf98b01e866222690033e2 /ext/ereg/ereg.c | |
parent | 6823fb1fe789a433470fb4122c5d52cbe11b6185 (diff) | |
download | php-git-9a171d03e84af05f135a2e2afe8a9008bc79e3a1.tar.gz |
Be more aggressive in making sure that substring matches are valid in
ereg_replace before trying to use them.
# i could have sworn i fixed this in php3. ereg() has similar logic, i
# guess i just missed ereg_replace. fixing this lets
# ext/standard/tests/reg/012.phpt pass on my debian/unstable box
Diffstat (limited to 'ext/ereg/ereg.c')
-rw-r--r-- | ext/ereg/ereg.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/ereg/ereg.c b/ext/ereg/ereg.c index 98b09345e2..82a12a1d83 100644 --- a/ext/ereg/ereg.c +++ b/ext/ereg/ereg.c @@ -369,7 +369,9 @@ PHPAPI char *php_reg_replace(const char *pattern, const char *replace, const cha if ('\\' == *walk && '0' <= walk[1] && '9' >= walk[1] && subs[walk[1] - '0'].rm_so > -1 - && subs[walk[1] - '0'].rm_eo > -1) { + && subs[walk[1] - '0'].rm_eo > -1 + /* this next case shouldn't happen. it does. */ + && subs[walk[1] - '0'].rm_so < subs[walk[1] - '0'].rm_eo) { tmp = subs[walk[1] - '0'].rm_eo - subs[walk[1] - '0'].rm_so; memcpy (walkbuf, |