mirror of
https://github.com/php/php-src.git
synced 2026-03-26 17:22:15 +01:00
Warnings for empty regular expressions
This commit is contained in:
@@ -307,7 +307,9 @@ php_mbereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
mbre_free_registers(®s);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (regs.beg[0] == regs.end[0]) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty regular expression");
|
||||
}
|
||||
match_len = 1;
|
||||
str = Z_STRVAL_PP(arg_string);
|
||||
if (array) {
|
||||
@@ -423,6 +425,10 @@ php_mbereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, int option)
|
||||
pos = 0;
|
||||
while (err >= 0) {
|
||||
err = mbre_search(&re, string, string_len, pos, string_len - pos, ®s);
|
||||
if ( regs.beg[0] == regs.end[0] ) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty regular expression");
|
||||
break;
|
||||
}
|
||||
if (err <= -2) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "mbregex search failure in php_mbereg_replace_exec()");
|
||||
break;
|
||||
@@ -565,20 +571,19 @@ PHP_FUNCTION(mb_split)
|
||||
/* churn through str, generating array entries as we go */
|
||||
while ((count != 0) &&
|
||||
(err = mbre_search(&re, string, string_len, pos, string_len - pos, ®s)) >= 0) {
|
||||
if ( regs.beg[0] == regs.end[0] ) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty regular expression");
|
||||
break;
|
||||
}
|
||||
|
||||
n = regs.beg[0];
|
||||
if (n == pos) {
|
||||
/* match is at start of string, return empty string */
|
||||
add_next_index_stringl(return_value, empty_string, 0, 1);
|
||||
/* add it to the array */
|
||||
if (n < string_len && n <= pos) {
|
||||
n -= pos;
|
||||
add_next_index_stringl(return_value, &string[pos], n, 1);
|
||||
} else {
|
||||
/* On a real match */
|
||||
/* add it to the array */
|
||||
if (n < string_len) {
|
||||
n -= pos;
|
||||
add_next_index_stringl(return_value, &string[pos], n, 1);
|
||||
} else {
|
||||
err = -2;
|
||||
break;
|
||||
}
|
||||
err = -2;
|
||||
break;
|
||||
}
|
||||
/* point at our new starting point */
|
||||
n = regs.end[0];
|
||||
@@ -736,7 +741,6 @@ php_mbereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
|
||||
}
|
||||
|
||||
err = mbre_search(MBSTRG(search_re), str, len, pos, len - pos, MBSTRG(search_regs));
|
||||
|
||||
if (err <= -2) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "mbregex search failure in mbregex_search()");
|
||||
RETVAL_FALSE;
|
||||
@@ -744,6 +748,9 @@ php_mbereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
|
||||
MBSTRG(search_pos) = len;
|
||||
RETVAL_FALSE;
|
||||
} else {
|
||||
if (MBSTRG(search_regs)->beg[0] == MBSTRG(search_regs)->end[0]) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty regular expression");
|
||||
}
|
||||
switch (mode) {
|
||||
case 1:
|
||||
if (array_init(return_value) != FAILURE) {
|
||||
|
||||
Reference in New Issue
Block a user