mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix #72711: mb_ereg
does not clear the $regs
parameter on failure
When `mb_ereg` failed to match, it didn't update the `$regs` argument. Now it will always set it to the empty array.
This commit is contained in:
parent
318d3b3a3f
commit
03d03243fa
8 changed files with 108 additions and 50 deletions
4
NEWS
4
NEWS
|
@ -5,6 +5,10 @@ PHP NEWS
|
|||
- EXIF:
|
||||
. Fixed bug #72735 (Samsung picture thumb not read (zero size)). (Kalle, Remi)
|
||||
|
||||
- mbstring:
|
||||
. Fixed bug #72711 (`mb_ereg` does not clear the `$regs` parameter on
|
||||
failure). (ju1ius)
|
||||
|
||||
- Stream:
|
||||
. Fixed bug #72743 (Out-of-bound read in php_stream_filter_create).
|
||||
(Loianhtuan)
|
||||
|
|
|
@ -71,6 +71,10 @@ PHP 7.1 UPGRADE NOTES
|
|||
. When calling json_encode with JSON_UNESCAPED_UNICODE option, U+2028 and
|
||||
U+2029 are escaped.
|
||||
|
||||
- mbstring:
|
||||
. mb_ereg() and mb_eregi() will now set the $regs argument to an empty array,
|
||||
if nothing matched. Formerly, $regs was not modified in that case.
|
||||
|
||||
- OpenSSL:
|
||||
. Dropped sslv2 stream.
|
||||
|
||||
|
|
|
@ -713,6 +713,11 @@ static void _php_mb_regex_ereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
|||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (array != NULL) {
|
||||
zval_dtor(array);
|
||||
array_init(array);
|
||||
}
|
||||
|
||||
options = MBREX(regex_default_options);
|
||||
if (icase) {
|
||||
options |= ONIG_OPTION_IGNORECASE;
|
||||
|
@ -751,8 +756,6 @@ static void _php_mb_regex_ereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
|||
match_len = 1;
|
||||
str = string;
|
||||
if (array != NULL) {
|
||||
zval_dtor(array);
|
||||
array_init(array);
|
||||
|
||||
match_len = regs->end[0] - regs->beg[0];
|
||||
for (i = 0; i < regs->num_regs; i++) {
|
||||
|
|
|
@ -49,7 +49,8 @@ With $regs arg:
|
|||
|
||||
Warning: mb_ereg(): empty pattern in %s on line %d
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 2 --
|
||||
Without $regs arg:
|
||||
|
@ -60,7 +61,8 @@ With $regs arg:
|
|||
|
||||
Warning: mb_ereg(): empty pattern in %s on line %d
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 3 --
|
||||
Without $regs arg:
|
||||
|
@ -71,7 +73,8 @@ With $regs arg:
|
|||
|
||||
Warning: mb_ereg(): empty pattern in %s on line %d
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 4 --
|
||||
Without $regs arg:
|
||||
|
@ -82,7 +85,8 @@ With $regs arg:
|
|||
|
||||
Warning: mb_ereg(): empty pattern in %s on line %d
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 5 --
|
||||
Without $regs arg:
|
||||
|
@ -93,7 +97,8 @@ With $regs arg:
|
|||
|
||||
Warning: mb_ereg(): empty pattern in %s on line %d
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 6 --
|
||||
Without $regs arg:
|
||||
|
@ -104,7 +109,8 @@ With $regs arg:
|
|||
|
||||
Warning: mb_ereg(): empty pattern in %s on line %d
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 7 --
|
||||
Without $regs arg:
|
||||
|
@ -115,7 +121,8 @@ With $regs arg:
|
|||
|
||||
Warning: mb_ereg(): empty pattern in %s on line %d
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 8 --
|
||||
Without $regs arg:
|
||||
|
@ -126,4 +133,5 @@ With $regs arg:
|
|||
|
||||
Warning: mb_ereg(): empty pattern in %s on line %d
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
|
|
@ -27,7 +27,8 @@ array(3) {
|
|||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
array(0) {
|
||||
}
|
||||
}
|
||||
|
||||
Warning: mb_ereg(): empty pattern in %s on line %d
|
||||
|
@ -38,7 +39,8 @@ array(3) {
|
|||
[1]=>
|
||||
string(0) ""
|
||||
[2]=>
|
||||
string(0) ""
|
||||
array(0) {
|
||||
}
|
||||
}
|
||||
|
||||
Notice: Array to string conversion in %s on line %d
|
||||
|
@ -50,7 +52,8 @@ array(3) {
|
|||
[1]=>
|
||||
int(1)
|
||||
[2]=>
|
||||
string(0) ""
|
||||
array(0) {
|
||||
}
|
||||
}
|
||||
|
||||
Warning: mb_ereg() expects parameter 2 to be string, array given in %s on line %d
|
||||
|
|
|
@ -113,5 +113,6 @@ array(3) {
|
|||
string(8) "MTIzNA=="
|
||||
}
|
||||
bool(false)
|
||||
NULL
|
||||
Done
|
||||
array(0) {
|
||||
}
|
||||
Done
|
||||
|
|
|
@ -95,47 +95,58 @@ echo "Done";
|
|||
|
||||
-- Iteration 1 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 2 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 3 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 4 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 5 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 6 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 7 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 8 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 9 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 10 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 11 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 12 --
|
||||
int(6)
|
||||
|
@ -153,13 +164,16 @@ array(1) {
|
|||
|
||||
-- Iteration 14 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 15 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 16 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
Done
|
||||
|
|
|
@ -112,71 +112,88 @@ echo "Done";
|
|||
|
||||
-- Iteration 1 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 2 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 3 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 4 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 5 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 6 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 7 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 8 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 9 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 10 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 11 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 12 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 13 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 14 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 15 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 16 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 17 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 18 --
|
||||
int(3)
|
||||
|
@ -194,19 +211,23 @@ array(1) {
|
|||
|
||||
-- Iteration 20 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 21 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 22 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 23 --
|
||||
bool(false)
|
||||
NULL
|
||||
array(0) {
|
||||
}
|
||||
|
||||
-- Iteration 24 --
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue