From 4046a3ceaf15abf9973110d0daf15be4446da7ff Mon Sep 17 00:00:00 2001 From: Jackmcbarn Date: Sat, 18 Jan 2014 12:05:03 -0500 Subject: [PATCH] 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 --- AbuseFilter.parser.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/AbuseFilter.parser.php b/AbuseFilter.parser.php index 86582b917..83ba736f4 100644 --- a/AbuseFilter.parser.php +++ b/AbuseFilter.parser.php @@ -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();