summaryrefslogtreecommitdiff
path: root/ext/mbstring/mbstring.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mbstring/mbstring.c')
-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 1f7a1c98ca..14c662d8e5 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -1844,6 +1844,13 @@ PHP_FUNCTION(mb_strcut)
}
}
+ if (from > Z_STRLEN_PP(arg1)) {
+ RETURN_FALSE;
+ }
+ if (((unsigned) from + (unsigned) len) > Z_STRLEN_PP(arg1)) {
+ len = Z_STRLEN_PP(arg1) - from;
+ }
+
ret = mbfl_strcut(&string, &result, from, len);
if (ret != NULL) {
RETVAL_STRINGL(ret->val, ret->len, 0); /* the string is already strdup()'ed */