Skip to content

Commit c9ab107

Browse files
committed
Merge branch 'PHP-7.4'
2 parents babe7f3 + 2e59426 commit c9ab107

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed

ext/mbstring/php_mbregex.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -445,13 +445,18 @@ static php_mb_regex_t *php_mbregex_compile_pattern(const char *pattern, size_t p
445445
OnigErrorInfo err_info;
446446
OnigUChar err_str[ONIG_MAX_ERROR_MESSAGE_LEN];
447447

448+
if (!php_mb_check_encoding(pattern, patlen, _php_mb_regex_mbctype2name(enc))) {
449+
php_error_docref(NULL, E_WARNING,
450+
"Pattern is not valid under %s encoding", _php_mb_regex_mbctype2name(enc));
451+
return NULL;
452+
}
453+
448454
rc = zend_hash_str_find_ptr(&MBREX(ht_rc), (char *)pattern, patlen);
449455
if (!rc || onig_get_options(rc) != options || onig_get_encoding(rc) != enc || onig_get_syntax(rc) != syntax) {
450456
if ((err_code = onig_new(&retval, (OnigUChar *)pattern, (OnigUChar *)(pattern + patlen), options, enc, syntax, &err_info)) != ONIG_NORMAL) {
451457
onig_error_code_to_str(err_str, err_code, &err_info);
452458
php_error_docref(NULL, E_WARNING, "mbregex compile err: %s", err_str);
453-
retval = NULL;
454-
goto out;
459+
return NULL;
455460
}
456461
if (rc == MBREX(search_re)) {
457462
/* reuse the new rc? see bug #72399 */
@@ -461,7 +466,6 @@ static php_mb_regex_t *php_mbregex_compile_pattern(const char *pattern, size_t p
461466
} else {
462467
retval = rc;
463468
}
464-
out:
465469
return retval;
466470
}
467471
/* }}} */

ext/mbstring/tests/bug77370.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ Bug #77370 (Buffer overflow on mb regex functions - fetch_token)
77
var_dump(mb_split(" \xfd",""));
88
?>
99
--EXPECTF--
10-
Warning: mb_split(): mbregex compile err: invalid code point value in %sbug77370.php on line %d
10+
Warning: mb_split(): Pattern is not valid under UTF-8 encoding in %s on line %d
1111
bool(false)

ext/mbstring/tests/bug77371.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ Bug #77371 (heap buffer overflow in mb regex functions - compile_string_node)
77
var_dump(mb_ereg("()0\xfc00000\xfc00000\xfc00000\xfc",""));
88
?>
99
--EXPECTF--
10-
Warning: mb_ereg(): mbregex compile err: invalid code point value in %sbug77371.php on line %d
10+
Warning: mb_ereg(): Pattern is not valid under UTF-8 encoding in %s on line %d
1111
bool(false)

ext/mbstring/tests/bug77381.phpt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ var_dump(mb_ereg("0000\\"."\xf5","0"));
1010
var_dump(mb_ereg("(?i)FFF00000000000000000\xfd",""));
1111
?>
1212
--EXPECTF--
13-
Warning: mb_ereg(): mbregex compile err: invalid code point value in %sbug77381.php on line %d
13+
Warning: mb_ereg(): Pattern is not valid under UTF-8 encoding in %s on line %d
1414
bool(false)
1515

16-
Warning: mb_ereg(): mbregex compile err: invalid code point value in %sbug77381.php on line %d
16+
Warning: mb_ereg(): Pattern is not valid under UTF-8 encoding in %s on line %d
1717
bool(false)
1818

19-
Warning: mb_ereg(): mbregex compile err: invalid code point value in %sbug77381.php on line %d
19+
Warning: mb_ereg(): Pattern is not valid under UTF-8 encoding in %s on line %d
2020
bool(false)
2121

22-
Warning: mb_ereg(): mbregex compile err: invalid code point value in %sbug77381.php on line %d
22+
Warning: mb_ereg(): Pattern is not valid under UTF-8 encoding in %s on line %d
2323
bool(false)

0 commit comments

Comments
 (0)