com php-src: Fixed bug #68852 (broken strrpos with negative offset): ext/standard/string.c ext/standard/tests/strings/strrpos.phpt

From: Date: Sun, 18 Jan 2015 15:05:27 +0000
Subject: com php-src: Fixed bug #68852 (broken strrpos with negative offset): ext/standard/string.c ext/standard/tests/strings/strrpos.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-84160@lists.php.net to get a copy of this message
Commit: f3052c5d2f86f9dac756b7c9519017b22b99ed3e Author: Xinchen Hui <laruence@php.net> Sun, 18 Jan 2015 10:05:27 -0500 Parents: 218d83d217e9a92d2ceb9a67f989e4851f6cf0a1 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=f3052c5d2f86f9dac756b7c9519017b22b99ed3e Log: Fixed bug #68852 (broken strrpos with negative offset) Bugs: https://bugs.php.net/68852 Changed paths: M ext/standard/string.c M ext/standard/tests/strings/strrpos.phpt Diff: diff --git a/ext/standard/string.c b/ext/standard/string.c index 8bb8a9c..5807304 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -2050,8 +2050,8 @@ PHP_FUNCTION(strrpos) RETURN_FALSE; } p = haystack->val; - if (haystack->len + (size_t)offset >= needle_len) { - e = haystack->val + haystack->len + (size_t)offset + needle_len; + if (haystack->len + offset + 1 >= needle_len) { + e = haystack->val + haystack->len + offset + needle_len; } else { e = haystack->val + haystack->len; } @@ -2149,8 +2149,8 @@ PHP_FUNCTION(strripos) RETURN_FALSE; } p = haystack_dup->val; - if (haystack->len + (size_t)offset >= needle->len) { - e = haystack_dup->val + haystack->len + (size_t)offset + needle->len; + if (haystack->len + offset + 1 >= needle->len) { + e = haystack_dup->val + haystack->len + offset + needle->len; } else { e = haystack_dup->val + haystack->len; } diff --git a/ext/standard/tests/strings/strrpos.phpt b/ext/standard/tests/strings/strrpos.phpt index 691f67e..6b5ee09 100644 --- a/ext/standard/tests/strings/strrpos.phpt +++ b/ext/standard/tests/strings/strrpos.phpt @@ -15,6 +15,10 @@ strrpos() function var_dump(@strrpos("a", "")); var_dump(@strrpos("", "a")); var_dump(@strrpos("\\\\a", "\\a")); + var_dump(strrpos("/documents/show/5474", '/', -20)); + var_dump(@strrpos("/documents/show/5474", '/d', -21)); + var_dump(strrpos("/documents/show/5474", 'd', -19)); + var_dump(strrpos("/documents/show/5474", '/d', -15)); ?> --EXPECT-- int(5) @@ -30,3 +34,7 @@ bool(false) bool(false) bool(false) int(1) +int(0) +bool(false) +int(1) +int(0)

« previous php.cvs (#84160) next »