← Commit list

69efbcaa03

Daniel Stenberg
Daniel Stenberg
2025-10-10
SUCCESS Duration: 196s

Subject

ldap: avoid null ptr deref on failure

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/ldap.c+12 -24
@@ -535,7 +535,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
/* Get the DN and write it to the client */
{
char *name;
- size_t name_len;
+ size_t name_len = 0;
#ifdef USE_WIN32_LDAP
TCHAR *dn = ldap_get_dn(server, entryIterator);
name = curlx_convert_tchar_to_UTF8(dn);
@@ -549,32 +549,20 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
#else
char *dn = name = ldap_get_dn(server, entryIterator);
#endif
- name_len = strlen(name);
-
- result = Curl_client_write(data, CLIENTWRITE_BODY, "DN: ", 4);
- if(result) {
- FREE_ON_WINLDAP(name);
- ldap_memfree(dn);
- goto quit;
- }
-
- result = Curl_client_write(data, CLIENTWRITE_BODY, name, name_len);
- if(result) {
- FREE_ON_WINLDAP(name);
- ldap_memfree(dn);
- goto quit;
+ if(!name)
+ result = CURLE_FAILED_INIT;
+ else {
+ name_len = strlen(name);
+ result = Curl_client_write(data, CLIENTWRITE_BODY, "DN: ", 4);
}
-
- result = Curl_client_write(data, CLIENTWRITE_BODY, "\n", 1);
- if(result) {
- FREE_ON_WINLDAP(name);
- ldap_memfree(dn);
-
- goto quit;
- }
-
+ if(!result)
+ result = Curl_client_write(data, CLIENTWRITE_BODY, name, name_len);
+ if(!result)
+ result = Curl_client_write(data, CLIENTWRITE_BODY, "\n", 1);
FREE_ON_WINLDAP(name);
ldap_memfree(dn);
+ if(result)
+ goto quit;
}
/* Get the attributes and write them to the client */