@@ -38,6 +38,11 @@ http_internal_string utf8_from_utf16(_In_reads_(size) PCWSTR utf16, size_t size)
3838 return " " ;
3939 }
4040
41+ if (size > INT_MAX)
42+ {
43+ throw std::exception (" utf8_from_utf16 failed: input too large" );
44+ }
45+
4146 // query for the buffer size
4247 auto queryResult = WideCharToMultiByte (
4348 CP_UTF8, WC_ERR_INVALID_CHARS,
@@ -49,13 +54,13 @@ http_internal_string utf8_from_utf16(_In_reads_(size) PCWSTR utf16, size_t size)
4954 {
5055#if HC_TRACE_ERROR_ENABLE // to avoid unused variable warnings
5156 auto err = GetLastError ();
52- HC_TRACE_ERROR (HTTPCLIENT, " utf16_from_uft8 failed during buffer size query with error: %u" , err);
57+ HC_TRACE_ERROR (HTTPCLIENT, " utf8_from_utf16 failed during buffer size query with error: %u" , err);
5358#endif
54- throw std::exception (" utf16_from_utf8 failed" );
59+ throw std::exception (" utf8_from_utf16 failed" );
5560 }
5661
5762 // allocate the output buffer, queryResult is the required size
58- http_internal_string utf8 (static_cast <size_t >(queryResult), L ' \0 ' );
63+ http_internal_string utf8 (static_cast <size_t >(queryResult), ' \0 ' );
5964 auto conversionResult = WideCharToMultiByte (
6065 CP_UTF8, WC_ERR_INVALID_CHARS,
6166 utf16, static_cast <int >(size),
@@ -66,9 +71,9 @@ http_internal_string utf8_from_utf16(_In_reads_(size) PCWSTR utf16, size_t size)
6671 {
6772#if HC_TRACE_ERROR_ENABLE // to avoid unused variable warnings
6873 auto err = GetLastError ();
69- HC_TRACE_ERROR (HTTPCLIENT, " utf16_from_uft8 failed during conversion: %u" , err);
74+ HC_TRACE_ERROR (HTTPCLIENT, " utf8_from_utf16 failed during conversion: %u" , err);
7075#endif
71- throw std::exception (" utf16_from_utf8 failed" );
76+ throw std::exception (" utf8_from_utf16 failed" );
7277 }
7378
7479 return utf8;
@@ -82,6 +87,11 @@ http_internal_wstring utf16_from_utf8(_In_reads_(size) const char* utf8, size_t
8287 return L" " ;
8388 }
8489
90+ if (size > INT_MAX)
91+ {
92+ throw std::exception (" utf16_from_utf8 failed: input too large" );
93+ }
94+
8595 // query for the buffer size
8696 auto queryResult = MultiByteToWideChar (
8797 CP_UTF8, MB_ERR_INVALID_CHARS,
@@ -92,7 +102,7 @@ http_internal_wstring utf16_from_utf8(_In_reads_(size) const char* utf8, size_t
92102 {
93103#if HC_TRACE_ERROR_ENABLE // to avoid unused variable warnings
94104 auto err = GetLastError ();
95- HC_TRACE_ERROR (HTTPCLIENT, " utf16_from_uft8 failed during buffer size query with error: %u" , err);
105+ HC_TRACE_ERROR (HTTPCLIENT, " utf16_from_utf8 failed during buffer size query with error: %u" , err);
96106#endif
97107 throw std::exception (" utf16_from_utf8 failed" );
98108 }
@@ -108,7 +118,7 @@ http_internal_wstring utf16_from_utf8(_In_reads_(size) const char* utf8, size_t
108118 {
109119#if HC_TRACE_ERROR_ENABLE // to avoid unused variable warnings
110120 auto err = GetLastError ();
111- HC_TRACE_ERROR (HTTPCLIENT, " utf16_from_uft8 failed during conversion: %u" , err);
121+ HC_TRACE_ERROR (HTTPCLIENT, " utf16_from_utf8 failed during conversion: %u" , err);
112122#endif
113123 throw std::exception (" utf16_from_utf8 failed" );
114124 }
0 commit comments