mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Fix use of mb_ereg_search_getregs() after invalid pattern
This segfaulted because we assumed that if there are matches, there must be a regular expression as well.
This commit is contained in:
parent
136f51f1e1
commit
392ad206a4
2 changed files with 22 additions and 3 deletions
|
@ -1426,6 +1426,11 @@ _php_mb_regex_ereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
|
|||
_php_mb_regex_init_options(arg_options, arg_options_len, &option, &syntax, NULL);
|
||||
}
|
||||
|
||||
if (MBREX(search_regs)) {
|
||||
onig_region_free(MBREX(search_regs), 1);
|
||||
MBREX(search_regs) = NULL;
|
||||
}
|
||||
|
||||
if (arg_pattern) {
|
||||
/* create regex pattern buffer */
|
||||
if ((MBREX(search_re) = php_mbregex_compile_pattern(arg_pattern, arg_pattern_len, option, MBREX(current_mbctype), MBREX(regex_default_syntax))) == NULL) {
|
||||
|
@ -1451,9 +1456,6 @@ _php_mb_regex_ereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
|
|||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (MBREX(search_regs)) {
|
||||
onig_region_free(MBREX(search_regs), 1);
|
||||
}
|
||||
MBREX(search_regs) = onig_region_new();
|
||||
|
||||
err = _php_mb_onig_search(MBREX(search_re), str, str + len, str + pos, str + len, MBREX(search_regs), 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue