Fix incorrect length setting leads to out-of-bounds memory access

This commit is contained in:
obdev
2023-03-22 11:42:13 +00:00
committed by ob-robot
parent d5034e56fa
commit ef75f54b72

View File

@ -458,7 +458,7 @@ int ObExprSubstr::substr(common::ObString &varchar,
res_len = min(length, mb_len - start);
int64_t offset = ObCharset::charpos(cs_type, varchar.ptr(), varchar.length(), start);
res_len = ObCharset::charpos(cs_type, varchar.ptr() + offset,
(offset == 0) ? varchar.length() : varchar.length() - offset + 1, res_len);
(offset == 0) ? varchar.length() : varchar.length() - offset, res_len);
varchar.assign_ptr(varchar.ptr() + offset, static_cast<int32_t>(res_len));
}
}