Prevent integer overflows in wstr_to_utf8buf and utf8_to_wstrbuf

pull/1787/head
Charles Milette 5 years ago
parent 9e19012cb0
commit ac35dd5a6f
No known key found for this signature in database
GPG Key ID: 1A5AE81377AD973A

@ -436,7 +436,7 @@ SPDLOG_INLINE bool in_terminal(FILE *file) SPDLOG_NOEXCEPT
#if (defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) || defined(SPDLOG_WCHAR_FILENAMES)) && defined(_WIN32)
SPDLOG_INLINE void wstr_to_utf8buf(wstring_view_t wstr, memory_buf_t &target)
{
if (wstr.size() > static_cast<size_t>((std::numeric_limits<int>::max)()))
if (wstr.size() > static_cast<size_t>(std::numeric_limits<int>::max()) / 2 - 1)
{
throw_spdlog_ex("UTF-16 string is too big to be converted to UTF-8");
}
@ -471,7 +471,7 @@ SPDLOG_INLINE void wstr_to_utf8buf(wstring_view_t wstr, memory_buf_t &target)
SPDLOG_INLINE void utf8_to_wstrbuf(string_view_t str, wmemory_buf_t &target)
{
if (str.size() > static_cast<size_t>((std::numeric_limits<int>::max)()))
if (str.size() > static_cast<size_t>(std::numeric_limits<int>::max()) - 1)
{
throw_spdlog_ex("UTF-8 string is too big to be converted to UTF-16");
}

Loading…
Cancel
Save