if ( ber_scanf( ber, "{a{V}}", &type, &vals ) == LBER_ERROR ) {
send_ldap_result( conn, op, LDAP_PROTOCOL_ERROR,
NULL, "decoding error" );
+ free( dn );
entry_free( e );
return;
}
0, 0 );
send_ldap_result( conn, op, LDAP_PROTOCOL_ERROR, NULL,
NULL );
+ free( type );
+ free( dn );
entry_free( e );
return;
}
* appropriate one, or send a referral to our "referral server"
* if we don't hold it.
*/
- if ( (be = select_backend( dn )) == NULL ) {
+ be = select_backend( dn );
+ free( dn );
+ if ( be == NULL ) {
entry_free( e );
send_ldap_result( conn, op, LDAP_PARTIAL_RESULTS, NULL,
default_referral );
/* XXX delete from parent's id2children entry XXX */
pdn = dn_parent( be, dn );
p = dn2entry_r( be, pdn, &matched );
+ free( pdn );
if ( id2children_remove( be, p, e ) != 0 ) {
send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, "","" );
goto error_return;
Filter *f
)
{
- IDList *result;
+ IDList *result, *tmp1, *tmp2;
Debug( LDAP_DEBUG_TRACE, "=> filter_candidates\n", 0, 0, 0 );
case LDAP_FILTER_NOT:
Debug( LDAP_DEBUG_FILTER, "\tNOT\n", 0, 0, 0 );
- result = idl_notin( be, idl_allids( be ), filter_candidates( be,
- f->f_not ) );
+ tmp1 = idl_allids( be );
+ tmp2 = filter_candidates( be, f->f_not );
+ result = idl_notin( be, tmp1, tmp2 );
+ idl_free( tmp2 );
+ idl_free( tmp1 );
break;
}
s ? s : "NULL", 0, 0 );
e = (Entry *) ch_calloc( 1, sizeof(Entry) );
- /* initialize reader/writer lock */
- entry_rdwr_init(e);
/* check to see if there's an id included */
next = s;
Debug( LDAP_DEBUG_TRACE,
"<= str2entry NULL (missing newline after id)\n",
0, 0, 0 );
+ free( e );
return( NULL );
}
}
+ /* initialize reader/writer lock */
+ entry_rdwr_init(e);
+
/* dn + attributes */
e->e_attrs = NULL;
vals[0] = &bval;
!= 0 ) {
Debug( LDAP_DEBUG_TRACE,
"<= str2entry NULL (attr_merge)\n", 0, 0, 0 );
+ entry_free( e );
return( NULL );
}
nvals++;
/* log and send error */
Debug( LDAP_DEBUG_ANY,
"ber_get_int returns 0x%lx\n", tag, 0, 0 );
+ ber_free( &ber, 1 );
return 1;
}