mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Merge branch 'PHP-7.3' into PHP-7.4
This commit is contained in:
commit
2783670daa
4 changed files with 20 additions and 11 deletions
|
@ -2500,7 +2500,8 @@ PHPAPI void php_pcre_split_impl(pcre_cache_entry *pce, zend_string *subject_str,
|
|||
match_data = pcre2_match_data_create_from_pattern(pce->re, gctx);
|
||||
if (!match_data) {
|
||||
PCRE_G(error_code) = PHP_PCRE_INTERNAL_ERROR;
|
||||
return;
|
||||
zval_ptr_dtor(return_value);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2620,6 +2621,11 @@ error:
|
|||
pcre2_match_data_free(match_data);
|
||||
}
|
||||
|
||||
if (PCRE_G(error_code) != PHP_PCRE_NO_ERROR) {
|
||||
zval_ptr_dtor(return_value);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
last:
|
||||
start_offset = (last_match - ZSTR_VAL(subject_str)); /* the offset might have been incremented, but without further successful matches */
|
||||
|
||||
|
|
|
@ -5,8 +5,7 @@ Bug #70345 (Multiple vulnerabilities related to PCRE functions)
|
|||
$regex = '/(?=xyz\K)/';
|
||||
$subject = "aaaaxyzaaaa";
|
||||
|
||||
$v = preg_split($regex, $subject);
|
||||
print_r($v);
|
||||
var_dump(preg_split($regex, $subject));
|
||||
|
||||
$regex = '/(a(?=xyz\K))/';
|
||||
$subject = "aaaaxyzaaaa";
|
||||
|
@ -14,10 +13,7 @@ preg_match($regex, $subject, $matches);
|
|||
|
||||
var_dump($matches);
|
||||
--EXPECTF--
|
||||
Array
|
||||
(
|
||||
[0] => aaaaxyzaaaa
|
||||
)
|
||||
bool(false)
|
||||
|
||||
Warning: preg_match(): Get subpatterns list failed in %s on line %d
|
||||
array(0) {
|
||||
|
|
10
ext/pcre/tests/bug76127.phpt
Normal file
10
ext/pcre/tests/bug76127.phpt
Normal file
|
@ -0,0 +1,10 @@
|
|||
--TEST--
|
||||
Bug #76127: preg_split does not raise an error on invalid UTF-8
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(preg_split("/a/u", "a\xff"));
|
||||
var_dump(preg_last_error() == PREG_BAD_UTF8_ERROR);
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
bool(true)
|
|
@ -310,8 +310,5 @@ array(6) {
|
|||
Warning: preg_last_error() expects exactly 0 parameters, 1 given in %s on line %d
|
||||
NULL
|
||||
bool(true)
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(6) "ab2c3u"
|
||||
}
|
||||
bool(false)
|
||||
bool(true)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue