X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Furl.c;h=85ac5ea01b472f85374405e3e8a3265c276b4bb8;hb=b4243bc119b2f88318103176c7c671662c9ff371;hp=5dc0b7038f904b4ad597ce396dbd734a1a628090;hpb=f3f72c5d2a75d18eeb2df6780ff960ffcb2b8fe1;p=openldap diff --git a/libraries/libldap/url.c b/libraries/libldap/url.c index 5dc0b7038f..85ac5ea01b 100644 --- a/libraries/libldap/url.c +++ b/libraries/libldap/url.c @@ -1,6 +1,6 @@ /* $OpenLDAP$ */ /* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ /* Portions @@ -17,7 +17,7 @@ * scope is one of these three strings: base one sub (default=base) * filter is an string-represented filter as in RFC 2254 * - * e.g., ldap://host:port/dc=com?o,cn?base?o=openldap?extension + * e.g., ldap://host:port/dc=com?o,cn?base?(o=openldap)?extension * * We also tolerate URLs that look like: and */ @@ -69,7 +69,8 @@ int ldap_pvt_url_scheme2proto( const char *scheme ) return -1; } -LDAP_F(int) ldap_pvt_url_scheme2tls( const char *scheme ) +int +ldap_pvt_url_scheme2tls( const char *scheme ) { assert( scheme ); @@ -156,10 +157,10 @@ skip_url_prefix( int *enclosedp, const char **scheme ) { -/* - * return non-zero if this looks like a LDAP URL; zero if not - * if non-zero returned, *urlp will be moved past "ldap://" part of URL - */ + /* + * return non-zero if this looks like a LDAP URL; zero if not + * if non-zero returned, *urlp will be moved past "ldap://" part of URL + */ const char *p; if ( url == NULL ) { @@ -1114,92 +1115,14 @@ ldap_free_urldesc( LDAPURLDesc *ludp ) LDAP_FREE( ludp ); } - - -int -ldap_url_search( LDAP *ld, LDAP_CONST char *url, int attrsonly ) -{ - int err; - LDAPURLDesc *ludp; - BerElement *ber; - LDAPreqinfo bind; - - assert( ld != NULL ); - assert( LDAP_VALID( ld ) ); - - if ( ldap_url_parse( url, &ludp ) != 0 ) { - ld->ld_errno = LDAP_PARAM_ERROR; - 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 ); - - if ( ber == NULL ) { - err = -1; - } else { - bind.ri_request = LDAP_REQ_SEARCH; - bind.ri_msgid = ld->ld_msgid; - bind.ri_url = (char *)url; - err = ldap_send_server_request( - ld, ber, ld->ld_msgid, NULL, - NULL, NULL, &bind ); - } - - ldap_free_urldesc( ludp ); - return( err ); -} - - -int -ldap_url_search_st( LDAP *ld, LDAP_CONST char *url, int attrsonly, - struct timeval *timeout, LDAPMessage **res ) -{ - int msgid; - - if (( msgid = ldap_url_search( ld, url, attrsonly )) == -1 ) { - return( ld->ld_errno ); - } - - if ( ldap_result( ld, msgid, 1, timeout, res ) == -1 ) { - return( ld->ld_errno ); - } - - if ( ld->ld_errno == LDAP_TIMEOUT ) { - (void) ldap_abandon( ld, msgid ); - ld->ld_errno = LDAP_TIMEOUT; - return( ld->ld_errno ); - } - - return( ldap_result2error( ld, *res, 0 )); -} - - -int -ldap_url_search_s( - LDAP *ld, LDAP_CONST char *url, int attrsonly, LDAPMessage **res ) +static int +ldap_int_unhex( int c ) { - int msgid; - - if (( msgid = ldap_url_search( ld, url, attrsonly )) == -1 ) { - return( ld->ld_errno ); - } - - if ( ldap_result( ld, msgid, 1, (struct timeval *)NULL, res ) == -1 ) { - return( ld->ld_errno ); - } - - return( ldap_result2error( ld, *res, 0 )); + return( c >= '0' && c <= '9' ? c - '0' + : c >= 'A' && c <= 'F' ? c - 'A' + 10 + : c - 'a' + 10 ); } - void ldap_pvt_hex_unescape( char *s ) { @@ -1212,10 +1135,10 @@ ldap_pvt_hex_unescape( char *s ) for ( p = s; *s != '\0'; ++s ) { if ( *s == '%' ) { if ( *++s != '\0' ) { - *p = ldap_pvt_unhex( *s ) << 4; + *p = ldap_int_unhex( *s ) << 4; } if ( *++s != '\0' ) { - *p++ += ldap_pvt_unhex( *s ); + *p++ += ldap_int_unhex( *s ); } } else { *p++ = *s; @@ -1226,10 +1149,3 @@ ldap_pvt_hex_unescape( char *s ) } -int -ldap_pvt_unhex( int c ) -{ - return( c >= '0' && c <= '9' ? c - '0' - : c >= 'A' && c <= 'F' ? c - 'A' + 10 - : c - 'a' + 10 ); -}