From: Jay Satiro Date: Thu, 1 Nov 2018 06:53:22 +0000 (-0400) Subject: curl_multibyte: fix a malloc overcalculation X-Git-Tag: curl-7_63_0~98 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=28429fb1753d63a659f38577b39e0b5747f28939;p=curl curl_multibyte: fix a malloc overcalculation Prior to this change twice as many bytes as necessary were malloc'd when converting wchar to UTF8. To allay confusion in the future I also changed the variable name for the amount of bytes from len to bytes. Closes https://github.com/curl/curl/pull/3209 --- diff --git a/lib/curl_multibyte.c b/lib/curl_multibyte.c index e78bb5002..e48334faf 100644 --- a/lib/curl_multibyte.c +++ b/lib/curl_multibyte.c @@ -64,13 +64,13 @@ char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w) char *str_utf8 = NULL; if(str_w) { - int str_utf8_len = WideCharToMultiByte(CP_UTF8, 0, str_w, -1, NULL, - 0, NULL, NULL); - if(str_utf8_len > 0) { - str_utf8 = malloc(str_utf8_len * sizeof(wchar_t)); + int bytes = WideCharToMultiByte(CP_UTF8, 0, str_w, -1, + NULL, 0, NULL, NULL); + if(bytes > 0) { + str_utf8 = malloc(bytes); if(str_utf8) { - if(WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, str_utf8_len, - NULL, FALSE) == 0) { + if(WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, bytes, + NULL, NULL) == 0) { free(str_utf8); return NULL; }