From 5a8c917c377281819cd14a5fbf9132d2ac11cbef Mon Sep 17 00:00:00 2001 From: Pierrick Charron Date: Sun, 3 Apr 2011 07:18:27 +0000 Subject: [PATCH] Fixed bug #54454 (substr_compare incorrectly reports equality in some cases) --- ext/standard/string.c | 4 ---- ext/standard/tests/strings/bug54454.phpt | 8 ++++++++ ext/standard/tests/strings/substr_compare.phpt | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 ext/standard/tests/strings/bug54454.phpt diff --git a/ext/standard/string.c b/ext/standard/string.c index 1aae38ccab..5eb0411b18 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -5252,10 +5252,6 @@ PHP_FUNCTION(substr_compare) RETURN_FALSE; } - if (len > s1_len - offset) { - len = s1_len - offset; - } - cmp_len = (uint) (len ? len : MAX(s2_len, (s1_len - offset))); if (!cs) { diff --git a/ext/standard/tests/strings/bug54454.phpt b/ext/standard/tests/strings/bug54454.phpt new file mode 100644 index 0000000000..88835c983b --- /dev/null +++ b/ext/standard/tests/strings/bug54454.phpt @@ -0,0 +1,8 @@ +--TEST-- +Bug #54454 (substr_compare incorrectly reports equality in some cases) +--FILE-- + +--EXPECT-- +int(-3) diff --git a/ext/standard/tests/strings/substr_compare.phpt b/ext/standard/tests/strings/substr_compare.phpt index 206ccd5ede..c647506b53 100644 --- a/ext/standard/tests/strings/substr_compare.phpt +++ b/ext/standard/tests/strings/substr_compare.phpt @@ -27,7 +27,7 @@ int(-1) Warning: substr_compare(): The start position cannot exceed initial string length in %s on line %d bool(false) -int(0) +int(-1) Warning: substr_compare() expects parameter 5 to be boolean, object given in %s on line %d bool(false) -- 2.50.1