42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
From 28429fb1753d63a659f38577b39e0b5747f28939 Mon Sep 17 00:00:00 2001
|
|
From: Jay Satiro <raysatiro@yahoo.com>
|
|
Date: Thu, 1 Nov 2018 02:53:22 -0400
|
|
Subject: [PATCH 261/557] 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
|
|
---
|
|
lib/curl_multibyte.c | 12 ++++++------
|
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/lib/curl_multibyte.c b/lib/curl_multibyte.c
|
|
index e78bb50..e48334f 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;
|
|
}
|
|
--
|
|
1.8.3.1
|
|
|