summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/mapping_tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/servers/slapd/mapping_tree.c')
-rw-r--r--ldap/servers/slapd/mapping_tree.c36
1 files changed, 17 insertions, 19 deletions
diff --git a/ldap/servers/slapd/mapping_tree.c b/ldap/servers/slapd/mapping_tree.c
index c682597a..479909a3 100644
--- a/ldap/servers/slapd/mapping_tree.c
+++ b/ldap/servers/slapd/mapping_tree.c
@@ -556,11 +556,10 @@ get_backends_from_attr(Slapi_Attr *attr, backend ***be_list, char ***be_names,
/*
* Description:
- * Release the memory allocated by the routine above.
- * Call this when the backend not put into structure and need to cleanup these tmp allocations
+ * Free the data allocated for mapping tree node arrays
*/
static void
-free_get_backends_from_attr(backend ***be_list, char ***be_names,
+free_mapping_tree_node_arrays(backend ***be_list, char ***be_names,
int ** be_states, int *be_list_count)
{
int i;
@@ -671,7 +670,7 @@ mapping_tree_entry_add(Slapi_Entry *entry, mapping_tree_node **newnodep )
if (get_backends_from_attr(attr, &be_list, &be_names, &be_states,
&be_list_count, &be_list_size, NULL)) {
- free_get_backends_from_attr(&be_list, &be_names, &be_states, &be_list_count);
+ free_mapping_tree_node_arrays(&be_list, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
return lderr;
}
@@ -776,7 +775,7 @@ mapping_tree_entry_add(Slapi_Entry *entry, mapping_tree_node **newnodep )
"ERROR: node %s must define a backend\n",
slapi_entry_get_dn(entry), 0, 0);
slapi_sdn_free(&subtree);
- free_get_backends_from_attr(&be_list, &be_names, &be_states, &be_list_count);
+ free_mapping_tree_node_arrays(&be_list, &be_names, &be_states, &be_list_count);
return lderr;
}
if (((state == MTN_REFERRAL) || (state == MTN_REFERRAL_ON_UPDATE))
@@ -786,7 +785,7 @@ mapping_tree_entry_add(Slapi_Entry *entry, mapping_tree_node **newnodep )
"ERROR: node %s must define referrals to be in referral state\n",
slapi_entry_get_dn(entry), 0, 0);
slapi_sdn_free(&subtree);
- free_get_backends_from_attr(&be_list, &be_names, &be_states, &be_list_count);
+ free_mapping_tree_node_arrays(&be_list, &be_names, &be_states, &be_list_count);
return lderr;
}
@@ -803,7 +802,7 @@ mapping_tree_entry_add(Slapi_Entry *entry, mapping_tree_node **newnodep )
slapi_sdn_free(&subtree);
slapi_ch_free((void **) &plugin_funct);
slapi_ch_free((void **) &plugin_lib);
- free_get_backends_from_attr(&be_list, &be_names, &be_states, &be_list_count);
+ free_mapping_tree_node_arrays(&be_list, &be_names, &be_states, &be_list_count);
return lderr;
}
}
@@ -822,7 +821,7 @@ mapping_tree_entry_add(Slapi_Entry *entry, mapping_tree_node **newnodep )
slapi_sdn_free(&subtree);
slapi_ch_free((void **) &plugin_funct);
slapi_ch_free((void **) &plugin_lib);
- free_get_backends_from_attr(&be_list, &be_names, &be_states, &be_list_count);
+ free_mapping_tree_node_arrays(&be_list, &be_names, &be_states, &be_list_count);
return lderr;
}
@@ -1119,7 +1118,7 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
else if (get_backends_from_attr(attr, &backends, &be_names,
&be_states, &be_list_count, &be_list_size, node))
{
- free_get_backends_from_attr(&backends, &be_names, &be_states, &be_list_count);
+ free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
@@ -1132,11 +1131,13 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "mapping tree entry need at least one nsslapd-backend\n");
*returncode = LDAP_UNWILLING_TO_PERFORM;
mtn_unlock();
- free_get_backends_from_attr(&backends, &be_names, &be_states, &be_list_count);
+ free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
return SLAPI_DSE_CALLBACK_ERROR;
}
+ /* free any old data */
+ free_mapping_tree_node_arrays(&node->mtn_be, &node->mtn_backend_names, &node->mtn_be_states, &node->mtn_be_count);
node->mtn_be_states = be_states;
node->mtn_be = backends;
node->mtn_backend_names = be_names;
@@ -1642,7 +1643,7 @@ mapping_tree_init()
}
static void
-mtn_free_node (mapping_tree_node **node)
+mtn_free_node (mapping_tree_node **node)
{
mapping_tree_node *child = (*node)->mtn_children;
@@ -1668,16 +1669,13 @@ mtn_free_node (mapping_tree_node **node)
if ((*node)->mtn_be_count > 0)
{
- if ((*node)->mtn_be)
- slapi_ch_free((void **) &((*node)->mtn_be));
-
- if ((*node)->mtn_backend_names)
- slapi_ch_free((void **) &((*node)->mtn_backend_names));
-
- if ((*node)->mtn_be_states)
- slapi_ch_free((void **) &((*node)->mtn_be_states));
+ free_mapping_tree_node_arrays(&((*node)->mtn_be), &((*node)->mtn_backend_names),
+ &((*node)->mtn_be_states), &((*node)->mtn_be_count));
}
+ slapi_ch_free_string(&((*node)->mtn_dstr_plg_lib));
+ slapi_ch_free_string(&((*node)->mtn_dstr_plg_name));
+
slapi_ch_free ((void**) node);
}