diff --git a/libraries/libldap/url.c b/libraries/libldap/url.c index 97b01b8aae..aa5b27645f 100644 --- a/libraries/libldap/url.c +++ b/libraries/libldap/url.c @@ -161,7 +161,7 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp ) LDAPURLDesc *ludp; char *p, *q; - int enclosed, ldaps; + int i, enclosed, ldaps; const char *url_tmp; char *url; @@ -402,6 +402,17 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp ) return LDAP_URL_ERR_BADEXTS; } + for( i=0; ludp->lud_exts[i] != NULL; i++ ) { + hex_unescape( ludp->lud_exts[i] ); + } + + if( i == 0 ) { + ldap_charray_free( ludp->lud_exts ); + LDAP_FREE( url ); + ldap_free_urldesc( ludp ); + return LDAP_URL_ERR_BADEXTS; + } + *ludpp = ludp; LDAP_FREE( url );