From 179b37095724bd9676811e60ff016332e5833616 Mon Sep 17 00:00:00 2001 From: Rui Hirokawa Date: Sat, 16 Feb 2008 10:43:57 +0000 Subject: [PATCH] fixed #43841 mb_strrpos offset is byte count for negative values. --- ext/mbstring/mbstring.c | 7 +++++++ 1 file changed, 7 insertions(+) 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); -- 2.50.1