ldap/servers/plugins/sync/sync_refresh.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-)
New commits: commit 549b9813f3e11847c72762738bfa71902b6eddba Author: Mark Reynolds mreynolds@redhat.com Date: Wed Mar 12 11:19:31 2014 -0400
Ticket 47740 - Fix sync plugin resource leaks
12503 - resource leak - /ldap/servers/plugin/sync/sync_refresh.c 12502 - resource leak - /ldap/servers/plugin/sync/sync_refresh.c 12501 - resource leak - /ldap/servers/plugin/sync/sync_refresh.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: lkripenz & nhosoi(Thanks!!) (cherry picked from commit 78f1bda48ba31c71f49ff89e2a32bd2e2227cc1b)
diff --git a/ldap/servers/plugins/sync/sync_refresh.c b/ldap/servers/plugins/sync/sync_refresh.c index 18f7884..c506a8a 100644 --- a/ldap/servers/plugins/sync/sync_refresh.c +++ b/ldap/servers/plugins/sync/sync_refresh.c @@ -467,16 +467,14 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data) }
uniqueid = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_UNIQUEID); - chgtype = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHGTYPE); - chgnr = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHANGENUMBER); - if (uniqueid == NULL) { slapi_log_error (SLAPI_LOG_FATAL, SYNC_PLUGIN_SUBSYSTEM, "Retro Changelog does not provied nsuniquedid." "Check RCL plugin configuration." ); return(1); } - + chgtype = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHGTYPE); + chgnr = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHANGENUMBER);
index = sync_number2int(chgnr) - cb->change_start; chg_req = sync_str2chgreq(chgtype); @@ -496,7 +494,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data) /* was add or mod, keep it */ cb->cb_updates[index].upd_uuid = 0; cb->cb_updates[index].upd_chgtype = 0; - slapi_ch_free((void **)&uniqueid); + slapi_ch_free_string(&uniqueid); } break; case LDAP_REQ_MODRDN: @@ -516,12 +514,12 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data) original_dn = slapi_sdn_new_dn_byref(entrydn); old_scope = sync_is_active_scope(original_dn,cb->orig_pb); slapi_sdn_free(&original_dn); - slapi_ch_free((void **)&entrydn); + slapi_ch_free_string(&entrydn); if (newsuperior) { Slapi_DN *newbase; newbase = slapi_sdn_new_dn_byref(newsuperior); new_scope = sync_is_active_scope(newbase, cb->orig_pb); - slapi_ch_free((void **)&newsuperior); + slapi_ch_free_string(&newsuperior); slapi_sdn_free(&newbase); } else { /* scope didn't change */ @@ -536,7 +534,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data) } else { cb->cb_updates[index].upd_uuid = 0; cb->cb_updates[index].upd_chgtype = 0; - slapi_ch_free((void **)&uniqueid); + slapi_ch_free_string(&uniqueid); } } else if ( old_scope ) { /* it was moved out of scope, handle as DEL */ @@ -547,7 +545,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data) } else { cb->cb_updates[prev].upd_chgtype = LDAP_REQ_DELETE; cb->cb_updates[prev].upd_e = sync_deleted_entry_from_changelog(cl_entry); - slapi_ch_free((void **)&uniqueid); + slapi_ch_free_string(&uniqueid); } } else if ( new_scope ) { /* moved into scope, handle as ADD */ @@ -555,6 +553,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data) cb->cb_updates[index].upd_uuid = uniqueid; } else { /* nothing to do */ + slapi_ch_free_string(&uniqueid); } slapi_sdn_free(&original_dn); break; @@ -570,8 +569,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data) /* if it was added since last cookie state, we * can ignoere it */ if (cb->cb_updates[prev].upd_chgtype == LDAP_REQ_ADD) { - slapi_ch_free((void **)&(cb->cb_updates[prev].upd_uuid)); - slapi_ch_free((void **)&uniqueid); + slapi_ch_free_string(&(cb->cb_updates[prev].upd_uuid)); cb->cb_updates[prev].upd_uuid = NULL; cb->cb_updates[index].upd_uuid = NULL; } else { @@ -580,11 +578,12 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data) cb->cb_updates[prev].upd_chgtype = LDAP_REQ_DELETE; cb->cb_updates[prev].upd_e = sync_deleted_entry_from_changelog(cl_entry); } + slapi_ch_free_string(&uniqueid); } break; } - slapi_ch_free((void **)&chgtype); - slapi_ch_free((void **)&chgnr); + slapi_ch_free_string(&chgtype); + slapi_ch_free_string(&chgnr);
return (0); }