summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Hirokawa <hirokawa@php.net>2008-02-16 10:43:57 +0000
committerRui Hirokawa <hirokawa@php.net>2008-02-16 10:43:57 +0000
commit179b37095724bd9676811e60ff016332e5833616 (patch)
tree1eb5a11f3be5db3eb1c7369479fa890a76688fac
parentc00121c5a8397c9ce758288434fbf8622e864069 (diff)
downloadphp-git-179b37095724bd9676811e60ff016332e5833616.tar.gz
fixed #43841 mb_strrpos offset is byte count for negative values.
-rw-r--r--ext/mbstring/mbstring.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 9932d73c87..4ded5962a5 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -1726,6 +1726,13 @@ PHP_FUNCTION(mb_strrpos)
if (needle.len <= 0) {
RETURN_FALSE;
}
+
+ if ((offset > 0 && offset > mbfl_strlen(&haystack)) ||
+ (offset < 0 && -offset > mbfl_strlen(&haystack))) {
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater than the length of haystack string");
+ RETURN_FALSE;
+ }
+
n = mbfl_strpos(&haystack, &needle, offset, 1);
if (n >= 0) {
RETVAL_LONG(n);