mirror of
https://github.com/moparisthebest/curl
synced 2024-12-23 16:48:49 -05:00
ldap: fix LDAP URL parsing regressions
- Match URL scheme with LDAP and LDAPS
- Retrieve attributes, scope and filter from URL query instead
Regression brought in 46e164069d
(7.62.0)
Closes #3362
This commit is contained in:
parent
3a9cb0d74d
commit
1b443a7c00
15
lib/ldap.c
15
lib/ldap.c
@ -839,6 +839,7 @@ static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp)
|
||||
{
|
||||
int rc = LDAP_SUCCESS;
|
||||
char *path;
|
||||
char *query;
|
||||
char *p;
|
||||
char *q;
|
||||
size_t i;
|
||||
@ -846,7 +847,7 @@ static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp)
|
||||
if(!conn->data ||
|
||||
!conn->data->state.up.path ||
|
||||
conn->data->state.up.path[0] != '/' ||
|
||||
!strcasecompare("LDAP", conn->data->state.up.scheme))
|
||||
!strncasecompare("LDAP", conn->data->state.up.scheme, 4))
|
||||
return LDAP_INVALID_SYNTAX;
|
||||
|
||||
ludp->lud_scope = LDAP_SCOPE_BASE;
|
||||
@ -858,11 +859,14 @@ static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp)
|
||||
if(!path)
|
||||
return LDAP_NO_MEMORY;
|
||||
|
||||
/* Parse the DN (Distinguished Name) */
|
||||
q = strchr(p, '?');
|
||||
if(q)
|
||||
*q++ = '\0';
|
||||
/* Duplicate the query */
|
||||
q = query = strdup(conn->data->state.up.query);
|
||||
if(!query) {
|
||||
free(path);
|
||||
return LDAP_NO_MEMORY;
|
||||
}
|
||||
|
||||
/* Parse the DN (Distinguished Name) */
|
||||
if(*p) {
|
||||
char *dn = p;
|
||||
char *unescaped;
|
||||
@ -1039,6 +1043,7 @@ static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp)
|
||||
|
||||
quit:
|
||||
free(path);
|
||||
free(query);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user