From 9de18e2ca2b89bba39ce62279c68c8a7bfeb3fac Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Wed, 12 Jul 2006 12:33:04 +0000 Subject: [PATCH] don't try to compare strings if haystack is "" or shorter than needle add test --- ext/standard/string.c | 7 +++- ext/standard/tests/strings/stripos.phpt | 55 +++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 ext/standard/tests/strings/stripos.phpt diff --git a/ext/standard/string.c b/ext/standard/string.c index 25580ba5e3d..f4efa6c5002 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -2429,8 +2429,13 @@ PHP_FUNCTION(stripos) } haystack_len = Z_UNILEN_P(haystack); + + if (haystack_len == 0) { + RETURN_FALSE; + } + if (Z_TYPE_P(needle) == IS_UNICODE || Z_TYPE_P(needle) == IS_STRING) { - if (!Z_UNILEN_P(needle)) { + if (!Z_UNILEN_P(needle) || Z_UNILEN_P(needle) > haystack_len) { RETURN_FALSE; } if (Z_TYPE_P(haystack) != Z_TYPE_P(needle)) { diff --git a/ext/standard/tests/strings/stripos.phpt b/ext/standard/tests/strings/stripos.phpt new file mode 100644 index 00000000000..ef0efe5b236 --- /dev/null +++ b/ext/standard/tests/strings/stripos.phpt @@ -0,0 +1,55 @@ +--TEST-- +stripos() function test +--FILE-- + +--EXPECT-- +int(0) +int(5) +int(5) +int(3) +int(10) +int(2) +int(0) +int(0) +bool(false) +bool(false) +bool(false) +bool(false) +int(0) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +int(1) +Done