X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fresult.c;h=37b36d1ea6ba1519ecdf4399aed6a5783c195a4c;hb=6147119dc8526a758a7c576940fe8483e2b93915;hp=4f2848e8dee7ef9a2f45f0944869a7c259f41367;hpb=cabe6ebe162ae6b2f7b4c0b0c88de74eaa8acfb5;p=openldap diff --git a/servers/slapd/result.c b/servers/slapd/result.c index 4f2848e8de..37b36d1ea6 100644 --- a/servers/slapd/result.c +++ b/servers/slapd/result.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -232,8 +233,8 @@ send_ldap_response( ber = ber_alloc_t( LBER_USE_DER ); - Debug( LDAP_DEBUG_TRACE, "send_ldap_response: tag=%ld msgid=%ld err=%ld\n", - (long) tag, (long) msgid, (long) err ); + Debug( LDAP_DEBUG_TRACE, "send_ldap_response: msgid=%ld tag=%ld err=%ld\n", + (long) msgid, (long) tag, (long) err ); if ( ber == NULL ) { Debug( LDAP_DEBUG_ANY, "ber_alloc failed\n", 0, 0, 0 ); @@ -404,9 +405,9 @@ send_ldap_result( NULL, NULL, ctrls ); Statslog( LDAP_DEBUG_STATS, - "conn=%ld op=%ld RESULT err=%ld tag=%lu text=%s\n", + "conn=%ld op=%ld RESULT tag=%lu err=%ld text=%s\n", (long) op->o_connid, (long) op->o_opid, - (long) err, (long) tag, text ); + (long) tag, (long) err, text ); if( tmp != NULL ) { free(tmp); @@ -476,9 +477,9 @@ send_search_result( NULL, NULL, ctrls ); Statslog( LDAP_DEBUG_STATS, - "conn=%ld op=%ld SEARCH RESULT err=%ld tag=%lu text=%s\n", + "conn=%ld op=%ld SEARCH RESULT tag=%lu err=%ld text=%s\n", (long) op->o_connid, (long) op->o_opid, - (long) err, (long) tag, text ); + (long) tag, (long) err, text ); } @@ -491,7 +492,6 @@ send_search_entry( Entry *e, char **attrs, int attrsonly, - int opattrs, LDAPControl **ctrls ) { @@ -500,7 +500,8 @@ send_search_entry( int i, rc=-1, bytes; AccessControl *acl; char *edn; - int allattrs; + int userattrs; + int opattrs; Debug( LDAP_DEBUG_TRACE, "=> send_search_entry: \"%s\"\n", e->e_dn, 0, 0 ); @@ -534,10 +535,14 @@ send_search_entry( goto error_return; } - /* check for special all user attributes ("*") attribute */ - allattrs = ( attrs == NULL ) ? 1 + /* check for special all user attributes ("*") type */ + userattrs = ( attrs == NULL ) ? 1 : charray_inlist( attrs, LDAP_ALL_USER_ATTRIBUTES ); + /* check for special all operational attributes ("+") type */ + opattrs = ( attrs == NULL ) ? 0 + : charray_inlist( attrs, LDAP_ALL_OPERATIONAL_ATTRIBUTES ); + for ( a = e->e_attrs; a != NULL; a = a->a_next ) { regmatch_t matches[MAXREMATCHES]; @@ -549,18 +554,16 @@ send_search_entry( } else { /* specific addrs requested */ - if ( allattrs ) { - /* user requested all user attributes */ - /* if operational, make sure it's in list */ - - if( oc_check_operational_attr( a->a_type ) - && !charray_inlist( attrs, a->a_type ) ) + if ( oc_check_operational_attr( a->a_type ) ) { + if( !opattrs && !charray_inlist( attrs, a->a_type ) ) + { + continue; + } + } else { + if (!userattrs && !charray_inlist( attrs, a->a_type ) ) { continue; } - - } else if ( !charray_inlist( attrs, a->a_type ) ) { - continue; } } @@ -611,6 +614,8 @@ send_search_entry( } #ifdef SLAPD_SCHEMA_DN + /* eventually will loop through generated operational attributes */ + /* only have subschemaSubentry implemented */ a = backend_subschemasubentry( be ); do { @@ -624,18 +629,16 @@ send_search_entry( } else { /* specific addrs requested */ - if ( allattrs ) { - /* user requested all user attributes */ - /* if operational, make sure it's in list */ - - if( oc_check_operational_attr( a->a_type ) - && !charray_inlist( attrs, a->a_type ) ) + if ( oc_check_operational_attr( a->a_type ) ) { + if( !opattrs && !charray_inlist( attrs, a->a_type ) ) + { + continue; + } + } else { + if (!userattrs && !charray_inlist( attrs, a->a_type ) ) { continue; } - - } else if ( !charray_inlist( attrs, a->a_type ) ) { - continue; } } @@ -738,7 +741,7 @@ send_search_reference( int rc; int bytes; - Debug( LDAP_DEBUG_TRACE, "=> send_search_entry (%s)\n", e->e_dn, 0, 0 ); + Debug( LDAP_DEBUG_TRACE, "=> send_search_reference (%s)\n", e->e_dn, 0, 0 ); if ( ! access_allowed( be, conn, op, e, "entry", NULL, ACL_READ ) ) @@ -806,7 +809,7 @@ send_search_reference( Statslog( LDAP_DEBUG_STATS2, "conn=%ld op=%ld ENTRY dn=\"%s\"\n", (long) conn->c_connid, (long) op->o_opid, e->e_dn, 0, 0 ); - Debug( LDAP_DEBUG_TRACE, "<= send_search_entry\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_TRACE, "<= send_search_reference\n", 0, 0, 0 ); return 0; }