Don't pass empty strings to strpos

When an empty parameter is passed to a function using strpos, such as when
an extra comma appears at the end of contains_any's parameter list, don't
call strpos on the empty string.

Bug: 60203
Change-Id: I6221a01ad1ec9090de7bfc1d9d6583f22ba0eb2e
This commit is contained in:
Jackmcbarn 2014-01-18 12:05:03 -05:00
parent 9c1d878b76
commit 4046a3ceaf

View file

@ -1787,8 +1787,12 @@ class AbuseFilterParser {
$haystack = $args[1]->toString();
$count = 0;
while ( ( $offset = strpos( $haystack, $needle, $offset + 1 ) ) !== false ) {
$count++;
// Bug #60203: Keep empty parameters from causing PHP warnings
if ( $needle !== '' ) {
while ( ( $offset = strpos( $haystack, $needle, $offset + 1 ) ) !== false ) {
$count++;
}
}
}
@ -1910,7 +1914,8 @@ class AbuseFilterParser {
} else {
$ok = false;
foreach ( $searchStrings as $needle ) {
if ( strpos( $s, $needle ) !== false ) {
// Bug #60203: Keep empty parameters from causing PHP warnings
if ( $needle !== '' && strpos( $s, $needle ) !== false ) {
$ok = true;
break;
}
@ -2100,6 +2105,11 @@ class AbuseFilterParser {
$haystack = $args[0]->toString();
$needle = $args[1]->toString();
// Bug #60203: Keep empty parameters from causing PHP warnings
if ( $needle === '' ) {
return new AFPData( AFPData::DInt, -1 );
}
if ( isset( $args[2] ) ) {
$offset = $args[2]->toInt();