diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 2386bdebbab..9e728115100 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -765,10 +765,14 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval, } } - if (offset >= total_len || len > total_len) { + if(len > total_len) { + len = total_len; + } + + if (offset >= total_len) { return PHP_ICONV_ERR_SUCCESS; } - + if ((offset + len) > total_len) { /* trying to compute the length */ len = total_len - offset;