1
0
mirror of https://github.com/moparisthebest/curl synced 2025-01-11 05:58:01 -05:00

ldap: fix OOM error on missing query string

- Allow missing queries, don't return NO_MEMORY error in such a case.

It is acceptable for there to be no specified query string, for example:

curl ldap://ldap.forumsys.com

A regression bug in 1b443a7 caused this issue.

This is a partial fix for #4261.

Bug: https://github.com/curl/curl/issues/4261#issuecomment-525543077
Reported-by: Jojojov@users.noreply.github.com
Analyzed-by: Samuel Surtees

Closes https://github.com/curl/curl/pull/4467
This commit is contained in:
Nicolas 2019-10-04 22:49:43 -03:00 committed by Jay Satiro
parent df85b86a92
commit 8bb3a95ce1

View File

@ -844,10 +844,10 @@ static bool split_str(char *str, char ***out, size_t *count)
static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp)
{
int rc = LDAP_SUCCESS;
char *path;
char *query;
char *p;
char *q;
char *path;
char *q = NULL;
char *query = NULL;
size_t i;
if(!conn->data ||
@ -865,11 +865,13 @@ static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp)
if(!path)
return LDAP_NO_MEMORY;
/* Duplicate the query */
q = query = strdup(conn->data->state.up.query);
if(!query) {
free(path);
return LDAP_NO_MEMORY;
/* Duplicate the query if present */
if(conn->data->state.up.query) {
q = query = strdup(conn->data->state.up.query);
if(!query) {
free(path);
return LDAP_NO_MEMORY;
}
}
/* Parse the DN (Distinguished Name) */