X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fldapd%2Fsearch.c;h=30d9141e28eb0e65a499bb87e362c2cb7da6ea9d;hb=a4411a9944c8e96fb1fe17f70f3e87f9d6003e68;hp=b250d6371afa603d83eb0e3c46d21ddb06b4ec77;hpb=42e0d83cb3a1a1c5b25183f1ab74ce7edbe25de7;p=openldap diff --git a/servers/ldapd/search.c b/servers/ldapd/search.c index b250d6371a..30d9141e28 100644 --- a/servers/ldapd/search.c +++ b/servers/ldapd/search.c @@ -10,25 +10,30 @@ * is provided ``as is'' without express or implied warranty. */ +#include "portable.h" + #include -#include + +#include +#include + #include #include #include #include #include #include -#include -#include + #include "lber.h" +#include "../../libraries/liblber/lber-int.h" /* get struct berelement */ #include "ldap.h" #include "common.h" -static get_filter(); -static get_filter_list(); -static get_substring_filter(); +static int get_filter(); +static int get_filter_list(); +static int get_substring_filter(); -#ifdef COMPAT +#ifdef LDAP_COMPAT extern int version; extern int ldap_compat; #define SEARCHRESTAG (ldap_compat == 20 ? OLD_LDAP_RES_SEARCH_RESULT : LDAP_RES_SEARCH_RESULT) @@ -182,11 +187,11 @@ do_search( rc = initiate_dap_operation( OP_SEARCH, m, &sa ); -#ifdef CLDAP +#ifdef LDAP_CONNECTIONLESS if ( m->m_cldap ) m->m_searchbase = sa.sra_baseobject; else -#endif /* CLDAP */ +#endif /* LDAP_CONNECTIONLESS */ dn_free( sa.sra_baseobject ); filter_free( sa.sra_filter ); @@ -201,7 +206,8 @@ do_search( return( 1 ); } -static get_filter( BerElement *ber, Filter *filt ) +static int +get_filter( BerElement *ber, Filter *filt ) { unsigned long tag, len; int err; @@ -240,14 +246,14 @@ static get_filter( BerElement *ber, Filter *filt ) err = 0; switch (tag = ber_peek_tag( ber, &len )) { -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_FILTER_EQUALITY: #endif case LDAP_FILTER_EQUALITY: Debug( LDAP_DEBUG_ARGS, "EQUALITY\n", 0, 0, 0 ); f->flt_type = FILTER_ITEM; f->FUITEM.fi_type = FILTERITEM_EQUALITY; -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) (void) ber_skip_tag( ber, &len ); #endif @@ -258,7 +264,7 @@ static get_filter( BerElement *ber, Filter *filt ) } break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_FILTER_SUBSTRINGS: #endif case LDAP_FILTER_SUBSTRINGS: @@ -266,14 +272,14 @@ static get_filter( BerElement *ber, Filter *filt ) err = get_substring_filter( ber, f ); break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_FILTER_GE: #endif case LDAP_FILTER_GE: Debug( LDAP_DEBUG_ARGS, "GE\n", 0, 0, 0 ); f->flt_type = FILTER_ITEM; f->FUITEM.fi_type = FILTERITEM_GREATEROREQUAL; -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) (void) ber_skip_tag( ber, &len ); #endif @@ -283,14 +289,14 @@ static get_filter( BerElement *ber, Filter *filt ) } break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_FILTER_LE: #endif case LDAP_FILTER_LE: Debug( LDAP_DEBUG_ARGS, "LE\n", 0, 0, 0 ); f->flt_type = FILTER_ITEM; f->FUITEM.fi_type = FILTERITEM_LESSOREQUAL; -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) (void) ber_skip_tag( ber, &len ); #endif @@ -301,10 +307,10 @@ static get_filter( BerElement *ber, Filter *filt ) } break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_FILTER_PRESENT: #endif -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 case LDAP_FILTER_PRESENT_30: #endif case LDAP_FILTER_PRESENT: @@ -312,7 +318,7 @@ static get_filter( BerElement *ber, Filter *filt ) f->flt_type = FILTER_ITEM; f->FUITEM.fi_type = FILTERITEM_PRESENT; len = sizeof(typestr); -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) (void) ber_skip_tag( ber, &len ); #endif @@ -323,14 +329,14 @@ static get_filter( BerElement *ber, Filter *filt ) return( LDAP_UNDEFINED_TYPE ); break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_FILTER_APPROX: #endif case LDAP_FILTER_APPROX: Debug( LDAP_DEBUG_ARGS, "APPROX\n", 0, 0, 0 ); f->flt_type = FILTER_ITEM; f->FUITEM.fi_type = FILTERITEM_APPROX; -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) (void) ber_skip_tag( ber, &len ); #endif @@ -341,7 +347,7 @@ static get_filter( BerElement *ber, Filter *filt ) } break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_FILTER_AND: #endif case LDAP_FILTER_AND: @@ -350,7 +356,7 @@ static get_filter( BerElement *ber, Filter *filt ) err = get_filter_list( ber, f ); break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_FILTER_OR: #endif case LDAP_FILTER_OR: @@ -359,7 +365,7 @@ static get_filter( BerElement *ber, Filter *filt ) err = get_filter_list( ber, f ); break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_FILTER_NOT: #endif case LDAP_FILTER_NOT: @@ -370,7 +376,7 @@ static get_filter( BerElement *ber, Filter *filt ) break; default: - Debug( LDAP_DEBUG_ANY, "unknown filter type %d\n", tag, 0, 0 ); + Debug( LDAP_DEBUG_ANY, "unknown filter type %lu\n", tag, 0, 0 ); free( f ); return( LDAP_PROTOCOL_ERROR ); break; @@ -380,7 +386,8 @@ static get_filter( BerElement *ber, Filter *filt ) return( err ); } -static get_filter_list( BerElement *ber, Filter f ) +static int +get_filter_list( BerElement *ber, Filter f ) { Filter new, tail; int err; @@ -389,7 +396,7 @@ static get_filter_list( BerElement *ber, Filter f ) Debug( LDAP_DEBUG_TRACE, "get_filter_list\n", 0, 0, 0 ); -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) (void) ber_skip_tag( ber, &len ); #endif @@ -411,7 +418,8 @@ static get_filter_list( BerElement *ber, Filter f ) return( 0 ); } -static get_substring_filter( BerElement *ber, Filter f ) +static int +get_substring_filter( BerElement *ber, Filter f ) { unsigned long tag, len; char typestr[64]; @@ -422,7 +430,7 @@ static get_substring_filter( BerElement *ber, Filter f ) Debug( LDAP_DEBUG_TRACE, "get_substring_filter\n", 0, 0, 0 ); -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) (void) ber_skip_tag( ber, &len ); #endif @@ -444,7 +452,7 @@ static get_substring_filter( BerElement *ber, Filter f ) tag = ber_next_element( ber, &len, last ) ) { AV_Sequence avs, any_end; -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) { if ( ber_scanf( ber, "{a}", &valstr ) == LBER_ERROR ) { return( LDAP_PROTOCOL_ERROR ); @@ -466,10 +474,10 @@ static get_substring_filter( BerElement *ber, Filter f ) return( LDAP_OPERATIONS_ERROR ); switch ( tag ) { -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_SUBSTRING_INITIAL: #endif -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 case LDAP_SUBSTRING_INITIAL_30: #endif case LDAP_SUBSTRING_INITIAL: @@ -482,10 +490,10 @@ static get_substring_filter( BerElement *ber, Filter f ) f->FUITEM.UNSUB.fi_sub_initial = avs; break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_SUBSTRING_ANY: #endif -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 case LDAP_SUBSTRING_ANY_30: #endif case LDAP_SUBSTRING_ANY: @@ -500,10 +508,10 @@ static get_substring_filter( BerElement *ber, Filter f ) any_end = avs; break; -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 case OLD_LDAP_SUBSTRING_FINAL: #endif -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 case LDAP_SUBSTRING_FINAL_30: #endif case LDAP_SUBSTRING_FINAL: @@ -546,7 +554,7 @@ search_result( correlate_search_results( sr ); } -#ifdef CLDAP +#ifdef LDAP_CONNECTIONLESS if ( m->m_cldap ) { if ((ber = der_alloc()) == NULLBER ) { send_ldap_msgresult( sb, SEARCHRESTAG, m, @@ -565,9 +573,9 @@ search_result( for ( e = sr->CSR_entries; e != NULLENTRYINFO; e = e->ent_next ) { Debug( LDAP_DEBUG_ARGS, "\tentry:\n", 0, 0, 0 ); -#ifdef CLDAP +#ifdef LDAP_CONNECTIONLESS if ( !m->m_cldap ) -#endif /* CLDAP */ +#endif /* LDAP_CONNECTIONLESS */ if ( (ber = der_alloc()) == NULLBER ) { send_ldap_msgresult( sb, SEARCHRESTAG, m, @@ -575,7 +583,7 @@ search_result( return; } -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 if ( version == 1 ) { if ( ber_printf( ber, "t{it{", OLD_LBER_SEQUENCE, m->m_msgid, OLD_LDAP_RES_SEARCH_ENTRY ) == -1 ) { @@ -585,7 +593,7 @@ search_result( } } else #endif -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) { if ( ber_printf( ber, "{it{{", m->m_msgid, LDAP_RES_SEARCH_ENTRY ) == -1 ) { @@ -595,11 +603,11 @@ search_result( } } else #endif -#ifdef CLDAP +#ifdef LDAP_CONNECTIONLESS if ( m->m_cldap ) rc = ber_printf( ber, "t{", LDAP_RES_SEARCH_ENTRY ); else -#endif /* CLDAP */ +#endif /* LDAP_CONNECTIONLESS */ rc = ber_printf( ber, "{it{", m->m_msgid, LDAP_RES_SEARCH_ENTRY ); @@ -609,10 +617,10 @@ search_result( return; } -#ifdef CLDAP +#ifdef LDAP_CONNECTIONLESS if ( m->m_cldap ) rc = encode_dn( ber, e->ent_dn, m->m_searchbase ); -#endif /* CLDAP */ +#endif /* LDAP_CONNECTIONLESS */ else rc = encode_dn( ber, e->ent_dn, NULLDN ); @@ -628,7 +636,7 @@ search_result( return; } -#ifdef COMPAT20 +#ifdef LDAP_COMPAT20 if ( version == 1 ) { if ( ber_printf( ber, "}}" ) == -1 ) { send_ldap_msgresult( sb, SEARCHRESTAG, m, @@ -638,7 +646,7 @@ search_result( } } else #endif -#ifdef COMPAT30 +#ifdef LDAP_COMPAT30 if ( ldap_compat == 30 ) { if ( ber_printf( ber, "}}}" ) == -1 ) { send_ldap_msgresult( sb, SEARCHRESTAG, m, @@ -648,11 +656,11 @@ search_result( } } else #endif -#ifdef CLDAP +#ifdef LDAP_CONNECTIONLESS if ( m->m_cldap ) rc = ber_printf( ber, "}" ); else -#endif /* CLDAP */ +#endif /* LDAP_CONNECTIONLESS */ rc = ber_printf( ber, "}}" ); if ( rc == -1 ) { @@ -667,7 +675,7 @@ search_result( ber->ber_buf, stderr, 0, 0 ); #endif -#ifdef CLDAP +#ifdef LDAP_CONNECTIONLESS if ( !m->m_cldap ) #endif (void) ber_flush( sb, ber, 1 ); @@ -688,7 +696,7 @@ search_result( Debug( LDAP_DEBUG_ARGS, "\tresult:\n", 0, 0, 0 ); -#ifdef CLDAP +#ifdef LDAP_CONNECTIONLESS if ( m->m_cldap ) { if ( ber_printf( ber, "t{ess}}}", SEARCHRESTAG, rc, "", "" ) == -1 ) {