]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/search.c
better fix: in case of error during bind, just bail out (very conservative, though)
[openldap] / servers / slapd / back-meta / search.c
index 0847a92638c72fa84c658bb2a77b6fad928851e0..7adabf379e60ba2ffc5684ddf950c378efecec1e 100644 (file)
@@ -630,11 +630,11 @@ really_bad:;
                                sres = slap_map_api2result( rs );
 
                                snprintf( buf, sizeof( buf ),
-                                       "%s meta_back_search[%d] "
-                                       "match=\"%s\" err=%d\n",
+                                       "%s meta_back_search[%ld] "
+                                       "match=\"%s\" err=%ld\n",
                                        op->o_log_prefix, i,
                                        candidates[ i ].sr_matched ? candidates[ i ].sr_matched : "",
-                                       candidates[ i ].sr_err );
+                                       (long) candidates[ i ].sr_err );
                                Debug( LDAP_DEBUG_ANY, "%s", buf, 0, 0 );
 
                                switch ( sres ) {
@@ -928,13 +928,10 @@ meta_send_entry(
                if ( BER_BVISNULL( &mapped ) || mapped.bv_val[0] == '\0' ) {
                        continue;
                }
-               attr = ( Attribute * )ch_malloc( sizeof( Attribute ) );
+               attr = ( Attribute * )ch_calloc( 1, sizeof( Attribute ) );
                if ( attr == NULL ) {
                        continue;
                }
-               attr->a_flags = 0;
-               attr->a_next = 0;
-               attr->a_desc = NULL;
                if ( slap_bv2ad( &mapped, &attr->a_desc, &text )
                                != LDAP_SUCCESS) {
                        if ( slap_bv2undef_ad( &mapped, &attr->a_desc, &text,
@@ -990,7 +987,6 @@ meta_send_entry(
                pretty = attr->a_desc->ad_type->sat_syntax->ssyn_pretty;
 
                if ( !validate && !pretty ) {
-                       attr->a_nvals = NULL;
                        attr_free( attr );
                        goto next_attr;
                }
@@ -1029,16 +1025,18 @@ meta_send_entry(
                 * ACLs to the target directory server, and letting
                 * everything pass thru the ldap backend.
                 */
-               } else if ( attr->a_desc->ad_type->sat_syntax ==
+               } else {
+                       int     i;
+
+                       if ( attr->a_desc->ad_type->sat_syntax ==
                                slap_schema.si_syn_distinguishedName )
-               {
-                       ldap_dnattr_result_rewrite( &dc, attr->a_vals );
+                       {
+                               ldap_dnattr_result_rewrite( &dc, attr->a_vals );
 
-               } else if ( attr->a_desc == slap_schema.si_ad_ref ) {
-                       ldap_back_referral_result_rewrite( &dc, attr->a_vals );
+                       } else if ( attr->a_desc == slap_schema.si_ad_ref ) {
+                               ldap_back_referral_result_rewrite( &dc, attr->a_vals );
 
-               } else {
-                       int     i;
+                       }
 
                        for ( i = 0; i < last; i++ ) {
                                struct berval   pval;