← Commit list

d52c7e78a3

Viktor Szakats
Viktor Szakats
2026-07-15
SUCCESS Duration: 193s

Subject

idn: restore `MultiByteToWideChar()` `MB_ERR_INVALID_CHARS` flag

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/curlx/fopen.c+1 -1
@@ -68,7 +68,7 @@ static wchar_t *fn_convert_UTF8_to_wchar(const char *str_utf8)
if(str_w_len > 0) {
str_w = CURLX_MALLOC(str_w_len * sizeof(wchar_t));
if(str_w) {
- if(MultiByteToWideChar(CP_UTF8, 0,
+ if(MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS,
str_utf8, -1, str_w, str_w_len) == 0) {
CURLX_FREE(str_w);
return NULL;
lib/curlx/multibyte.c+2 -2
@@ -41,8 +41,8 @@ wchar_t *curlx_convert_UTF8_to_wchar(const char *str_utf8)
if(str_w_len > 0) {
str_w = curlx_malloc(str_w_len * sizeof(wchar_t));
if(str_w) {
- if(MultiByteToWideChar(CP_UTF8, 0, str_utf8, -1, str_w,
- str_w_len) == 0) {
+ if(MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS,
+ str_utf8, -1, str_w, str_w_len) == 0) {
curlx_free(str_w);
return NULL;
}
lib/idn.c+4 -2
@@ -172,7 +172,8 @@ static CURLcode win32_idn_to_ascii(const char *in, char **out)
/* Returned in_w_len includes the null-terminator, which then gets
preserved across the calls that follow, ending up terminating
the buffer returned to the caller. */
- in_w_len = MultiByteToWideChar(CP_UTF8, 0, in, -1, in_w, IDN_MAX_LENGTH);
+ in_w_len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS,
+ in, -1, in_w, IDN_MAX_LENGTH);
if(in_w_len) {
wchar_t punycode[IDN_MAX_LENGTH];
int chars = IdnToAscii(0, in_w, in_w_len, punycode, IDN_MAX_LENGTH);
@@ -198,7 +199,8 @@ static CURLcode win32_ascii_to_idn(const char *in, char **out)
/* Returned in_w_len includes the null-terminator, which then gets
preserved across the calls that follow, ending up terminating
the buffer returned to the caller. */
- in_w_len = MultiByteToWideChar(CP_UTF8, 0, in, -1, in_w, IDN_MAX_LENGTH);
+ in_w_len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS,
+ in, -1, in_w, IDN_MAX_LENGTH);
if(in_w_len) {
WCHAR idn[IDN_MAX_LENGTH]; /* stores a UTF-16 string */
int chars = IdnToUnicode(0, in_w, in_w_len, idn, IDN_MAX_LENGTH);
lib/vtls/schannel.c+2 -4
@@ -473,10 +473,8 @@ static CURLcode get_client_cert(struct Curl_cfilter *cf,
if(pszPassword) {
int str_w_len = 0;
if(pwd_len > 0)
- str_w_len = MultiByteToWideChar(CP_UTF8,
- MB_ERR_INVALID_CHARS,
- sslc->key_passwd,
- (int)pwd_len,
+ str_w_len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS,
+ sslc->key_passwd, (int)pwd_len,
pszPassword, (int)(pwd_len + 1));
if((str_w_len >= 0) && (str_w_len <= (int)pwd_len))