mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
fix various memory leaks and handling issues
This commit is contained in:
parent
2ea72234aa
commit
c226563da4
@ -480,6 +480,11 @@ done:;
|
||||
backsql_entry_clean( op, &p );
|
||||
}
|
||||
|
||||
if ( rs->sr_ref ) {
|
||||
ber_bvarray_free( rs->sr_ref );
|
||||
rs->sr_ref = NULL;
|
||||
}
|
||||
|
||||
return rs->sr_err;
|
||||
}
|
||||
|
||||
|
@ -204,6 +204,11 @@ done:;
|
||||
op->o_tmpfree( bsi.bsi_attrs, op->o_tmpmemctx );
|
||||
}
|
||||
|
||||
if ( rs->sr_ref ) {
|
||||
ber_bvarray_free( rs->sr_ref );
|
||||
rs->sr_ref = NULL;
|
||||
}
|
||||
|
||||
Debug( LDAP_DEBUG_TRACE, "<==backsql_modify()\n", 0, 0, 0 );
|
||||
|
||||
return rs->sr_err;
|
||||
|
@ -558,8 +558,15 @@ done:;
|
||||
Modifications *tmp;
|
||||
for (; mod; mod=tmp ) {
|
||||
tmp = mod->sml_next;
|
||||
/* slap_modrdn2mods does things one way,
|
||||
* slap_mods_opattrs does it differently
|
||||
*/
|
||||
if ( mod->sml_op != SLAP_MOD_SOFTADD &&
|
||||
mod->sml_op != LDAP_MOD_DELETE ) break;
|
||||
if ( mod->sml_nvalues ) free( mod->sml_nvalues[0].bv_val );
|
||||
free( mod );
|
||||
}
|
||||
slap_mods_free( mod, 1 );
|
||||
}
|
||||
|
||||
if ( !BER_BVISNULL( &e_id.eid_ndn ) ) {
|
||||
@ -582,6 +589,11 @@ done:;
|
||||
backsql_entry_clean( op, &n );
|
||||
}
|
||||
|
||||
if ( rs->sr_ref ) {
|
||||
ber_bvarray_free( rs->sr_ref );
|
||||
rs->sr_ref = NULL;
|
||||
}
|
||||
|
||||
Debug( LDAP_DEBUG_TRACE, "<==backsql_modrdn()\n", 0, 0, 0 );
|
||||
|
||||
return rs->sr_err;
|
||||
|
@ -1517,16 +1517,16 @@ backsql_srch_query( backsql_srch_info *bsi, struct berval *query )
|
||||
BER_BVZERO( query );
|
||||
}
|
||||
|
||||
free( bsi->bsi_sel.bb_val.bv_val );
|
||||
bsi->bsi_op->o_tmpfree( bsi->bsi_sel.bb_val.bv_val, bsi->bsi_op->o_tmpmemctx );
|
||||
BER_BVZERO( &bsi->bsi_sel.bb_val );
|
||||
bsi->bsi_sel.bb_len = 0;
|
||||
free( bsi->bsi_from.bb_val.bv_val );
|
||||
bsi->bsi_op->o_tmpfree( bsi->bsi_from.bb_val.bv_val, bsi->bsi_op->o_tmpmemctx );
|
||||
BER_BVZERO( &bsi->bsi_from.bb_val );
|
||||
bsi->bsi_from.bb_len = 0;
|
||||
free( bsi->bsi_join_where.bb_val.bv_val );
|
||||
bsi->bsi_op->o_tmpfree( bsi->bsi_join_where.bb_val.bv_val, bsi->bsi_op->o_tmpmemctx );
|
||||
BER_BVZERO( &bsi->bsi_join_where.bb_val );
|
||||
bsi->bsi_join_where.bb_len = 0;
|
||||
free( bsi->bsi_flt_where.bb_val.bv_val );
|
||||
bsi->bsi_op->o_tmpfree( bsi->bsi_flt_where.bb_val.bv_val, bsi->bsi_op->o_tmpmemctx );
|
||||
BER_BVZERO( &bsi->bsi_flt_where.bb_val );
|
||||
bsi->bsi_flt_where.bb_len = 0;
|
||||
|
||||
@ -1620,7 +1620,7 @@ backsql_oc_get_candidates( void *v_oc, void *v_bsi )
|
||||
query.bv_val, 0, 0 );
|
||||
|
||||
rc = backsql_Prepare( bsi->bsi_dbh, &sth, query.bv_val, 0 );
|
||||
free( query.bv_val );
|
||||
bsi->bsi_op->o_tmpfree( query.bv_val, bsi->bsi_op->o_tmpmemctx );
|
||||
BER_BVZERO( &query );
|
||||
if ( rc != SQL_SUCCESS ) {
|
||||
Debug( LDAP_DEBUG_TRACE, "backsql_oc_get_candidates(): "
|
||||
@ -1991,6 +1991,10 @@ backsql_search( Operation *op, SlapReply *rs )
|
||||
rs->sr_ref = NULL;
|
||||
}
|
||||
|
||||
if ( !BER_BVISNULL( &base_entry.e_nname ) ) {
|
||||
entry_clean( &base_entry );
|
||||
}
|
||||
|
||||
goto done;
|
||||
}
|
||||
#ifdef SLAP_ACL_HONOR_DISCLOSE
|
||||
|
Loading…
Reference in New Issue
Block a user