Skip to content

Commit b3f07af

Browse files
committed
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix use of mb_ereg_search_getregs() after invalid pattern
2 parents 5589bf4 + 392ad20 commit b3f07af

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

ext/mbstring/php_mbregex.c

+5-3
Original file line numberDiff line numberDiff line change
@@ -1440,6 +1440,11 @@ _php_mb_regex_ereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
14401440
_php_mb_regex_init_options(arg_options, arg_options_len, &option, &syntax, NULL);
14411441
}
14421442

1443+
if (MBREX(search_regs)) {
1444+
onig_region_free(MBREX(search_regs), 1);
1445+
MBREX(search_regs) = NULL;
1446+
}
1447+
14431448
if (arg_pattern) {
14441449
/* create regex pattern buffer */
14451450
if ((MBREX(search_re) = php_mbregex_compile_pattern(arg_pattern, arg_pattern_len, option, MBREX(current_mbctype), MBREX(regex_default_syntax))) == NULL) {
@@ -1465,9 +1470,6 @@ _php_mb_regex_ereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
14651470
RETURN_FALSE;
14661471
}
14671472

1468-
if (MBREX(search_regs)) {
1469-
onig_region_free(MBREX(search_regs), 1);
1470-
}
14711473
MBREX(search_regs) = onig_region_new();
14721474

14731475
err = _php_mb_onig_search(MBREX(search_re), str, str + len, str + pos, str + len, MBREX(search_regs), 0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
mb_ereg_search() with invalid pattern should discard old matches
3+
--FILE--
4+
<?php
5+
6+
mb_ereg_search_init('');
7+
var_dump(mb_ereg_search(''));
8+
var_dump(mb_ereg_search("\xff"));
9+
var_dump(mb_ereg_search_getregs());
10+
11+
?>
12+
--EXPECTF--
13+
bool(true)
14+
15+
Warning: mb_ereg_search(): Pattern is not valid under UTF-8 encoding in %s on line %d
16+
bool(false)
17+
bool(false)

0 commit comments

Comments
 (0)