]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/url.c
Remove dead code
[openldap] / libraries / libldap / url.c
index 8da394051d3f8cc65d2277658c4d5d904f1ea93b..adc08c9b48951ee2fc7f9791ce58b00064f1ef8d 100644 (file)
@@ -208,7 +208,7 @@ static int str2scope( const char *p )
 
 
 int
-ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
+ldap_url_parse_ext( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
 {
 /*
  *  Pick apart the pieces of an LDAP URL.
@@ -221,7 +221,7 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
        const char *url_tmp;
        char *url;
 
-       if( url_in == NULL && ludpp == NULL ) {
+       if( url_in == NULL || ludpp == NULL ) {
                return LDAP_URL_ERR_PARAM;
        }
 
@@ -231,7 +231,7 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
         * because a call to LDAP_INT_GLOBAL_OPT() will try to allocate
         * the options and cause infinite recursion
         */
-       Debug( LDAP_DEBUG_TRACE, "ldap_url_parse(%s)\n", url_in, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, "ldap_url_parse_ext(%s)\n", url_in, 0, 0 );
 #endif
 
        *ludpp = NULL;  /* pessimistic */
@@ -275,8 +275,9 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
        ludp->lud_dn = NULL;
        ludp->lud_attrs = NULL;
        ludp->lud_filter = NULL;
-       ludp->lud_scope = LDAP_SCOPE_BASE;
+       ludp->lud_scope = LDAP_SCOPE_DEFAULT;
        ludp->lud_filter = NULL;
+       ludp->lud_exts = NULL;
 
        ludp->lud_scheme = LDAP_STRDUP( scheme );
 
@@ -516,11 +517,15 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
 
        for( i=0; ludp->lud_exts[i] != NULL; i++ ) {
                ldap_pvt_hex_unescape( ludp->lud_exts[i] );
+
+               if( *ludp->lud_exts[i] == '!' ) {
+                       /* count the number of critical extensions */
+                       ludp->lud_crit_exts++;
+               }
        }
 
        if( i == 0 ) {
                /* must have 1 or more */
-               ldap_charray_free( ludp->lud_exts );
                LDAP_FREE( url );
                ldap_free_urldesc( ludp );
                return LDAP_URL_ERR_BADEXTS;
@@ -532,6 +537,27 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
        return LDAP_URL_SUCCESS;
 }
 
+int
+ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
+{
+       int rc = ldap_url_parse_ext( url_in, ludpp );
+
+       if( rc != LDAP_URL_SUCCESS ) {
+               return rc;
+       }
+
+       if ((*ludpp)->lud_scope == LDAP_SCOPE_DEFAULT) {
+               (*ludpp)->lud_scope = LDAP_SCOPE_BASE;
+       }
+
+       if ((*ludpp)->lud_host != NULL && *(*ludpp)->lud_host == '\0') {
+               LDAP_FREE( (*ludpp)->lud_host );
+               (*ludpp)->lud_host = NULL;
+       }
+
+       return rc;
+}
+
 LDAPURLDesc *
 ldap_url_dup ( LDAPURLDesc *ludp )
 {
@@ -885,6 +911,12 @@ ldap_url_search( LDAP *ld, LDAP_CONST char *url, int attrsonly )
                return( -1 );
        }
 
+       if( ludp->lud_crit_exts ) {
+               /* we don't support any extension (yet) */
+               ld->ld_errno = LDAP_NOT_SUPPORTED;
+               return( -1 );
+       }
+
        ber = ldap_build_search_req( ld, ludp->lud_dn, ludp->lud_scope,
            ludp->lud_filter, ludp->lud_attrs, attrsonly, NULL, NULL,
                -1, -1 );