From: Daniel Stenberg Date: Sat, 30 Mar 2024 21:56:48 +0000 (+0100) Subject: idn: make Curl_idnconvert_hostname() use Curl_idn_decode() X-Git-Tag: curl-8_8_0~328 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6a43d0d74211bd640990d1498570466b4ac65f0b;p=thirdparty%2Fcurl.git idn: make Curl_idnconvert_hostname() use Curl_idn_decode() In the name of less code duplication Closes #13236 --- diff --git a/lib/idn.c b/lib/idn.c index 81a177f8cf..3890b0b06b 100644 --- a/lib/idn.c +++ b/lib/idn.c @@ -246,11 +246,7 @@ CURLcode Curl_idn_encode(const char *puny, char **output) */ void Curl_free_idnconverted_hostname(struct hostname *host) { - if(host->encalloc) { - /* must be freed with idn2_free() if allocated by libidn */ - Curl_idn_free(host->encalloc); - host->encalloc = NULL; - } + Curl_safefree(host->encalloc); } #endif /* USE_IDN */ @@ -267,20 +263,11 @@ CURLcode Curl_idnconvert_hostname(struct hostname *host) /* Check name for non-ASCII and convert hostname if we can */ if(!Curl_is_ASCII_name(host->name)) { char *decoded; - CURLcode result = idn_decode(host->name, &decoded); - if(!result) { - if(!*decoded) { - /* zero length is a bad host name */ - Curl_idn_free(decoded); - return CURLE_URL_MALFORMAT; - } - /* successful */ - host->encalloc = decoded; - /* change the name pointer to point to the encoded hostname */ - host->name = host->encalloc; - } - else + CURLcode result = Curl_idn_decode(host->name, &decoded); + if(result) return result; + /* successful */ + host->name = host->encalloc = decoded; } #endif return CURLE_OK; diff --git a/lib/idn.h b/lib/idn.h index 74bbcaf498..e75124ef9f 100644 --- a/lib/idn.h +++ b/lib/idn.h @@ -31,11 +31,6 @@ CURLcode Curl_idnconvert_hostname(struct hostname *host); void Curl_free_idnconverted_hostname(struct hostname *host); CURLcode Curl_idn_decode(const char *input, char **output); CURLcode Curl_idn_encode(const char *input, char **output); -#ifdef USE_LIBIDN2 -#define Curl_idn_free(x) idn2_free(x) -#else -#define Curl_idn_free(x) free(x) -#endif #else #define Curl_free_idnconverted_hostname(x)