]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
winldap: avoid NULL pointer deref on `ldap_get_dn()` fail
authorViktor Szakats <commit@vsz.me>
Sun, 14 Jun 2026 10:12:53 +0000 (12:12 +0200)
committerViktor Szakats <commit@vsz.me>
Mon, 15 Jun 2026 16:38:29 +0000 (18:38 +0200)
In non-Unicode builds.

Assisted-by: Jay Satiro
Closes #22000

lib/ldap.c

index 6b93d345b3106843c366145014d440a0f2b1732a..a6a69eb7f1e7e848b6f683301f33d58e17bd87f7 100644 (file)
@@ -456,21 +456,17 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
 
     /* Get the DN and write it to the client */
     {
-      char *name;
+      char *name = NULL;
       size_t name_len = 0;
 #ifdef USE_WIN32_LDAP
       TCHAR *dn = ldap_get_dn(server, entryIterator);
-      name = curlx_convert_tchar_to_UTF8(dn);
-      if(!name) {
-        ldap_memfree(dn);
-        result = CURLE_OUT_OF_MEMORY;
-        goto quit;
-      }
+      if(dn)
+        name = curlx_convert_tchar_to_UTF8(dn);
 #else
       char *dn = name = ldap_get_dn(server, entryIterator);
 #endif
       if(!name)
-        result = CURLE_FAILED_INIT;
+        result = dn ? CURLE_OUT_OF_MEMORY : CURLE_FAILED_INIT;
       else {
         name_len = strlen(name);
         result = Curl_client_write(data, CLIENTWRITE_BODY, "DN: ", 4);