summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Kinder <nkinder@redhat.com>2008-07-18 18:11:30 +0000
committerNathan Kinder <nkinder@redhat.com>2008-07-18 18:11:30 +0000
commit8e02614813752d70a42db7c7f911e410b5b4eb4c (patch)
treea44429cbd6f62e9246caa32d253e3a077d76021f
parent363c8f53c6d28e5ff46855fe6a7faf6dbc0a458e (diff)
downloadds-8e02614813752d70a42db7c7f911e410b5b4eb4c.tar.gz
ds-8e02614813752d70a42db7c7f911e410b5b4eb4c.tar.xz
ds-8e02614813752d70a42db7c7f911e410b5b4eb4c.zip
Resolves: 455913
Summary: Don't use Slapi_Mod on the stack.
-rw-r--r--ldap/servers/plugins/memberof/memberof.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/ldap/servers/plugins/memberof/memberof.c b/ldap/servers/plugins/memberof/memberof.c
index a7d8b75b..17769f4f 100644
--- a/ldap/servers/plugins/memberof/memberof.c
+++ b/ldap/servers/plugins/memberof/memberof.c
@@ -2115,24 +2115,25 @@ int memberof_fix_memberof_callback(Slapi_Entry *e, void *callback_data)
{
Slapi_PBlock *mod_pb = slapi_pblock_new();
Slapi_Value *val = 0;
- Slapi_Mod smod;
+ Slapi_Mod *smod;
LDAPMod **mods = (LDAPMod **) slapi_ch_malloc(2 * sizeof(LDAPMod *));
int hint = 0;
- slapi_mod_init(&smod, 0);
- slapi_mod_set_operation(&smod, LDAP_MOD_REPLACE | LDAP_MOD_BVALUES);
- slapi_mod_set_type(&smod, config->memberof_attr);
+ smod = slapi_mod_new();
+ slapi_mod_init(smod, 0);
+ slapi_mod_set_operation(smod, LDAP_MOD_REPLACE | LDAP_MOD_BVALUES);
+ slapi_mod_set_type(smod, config->memberof_attr);
/* Loop through all of our values and add them to smod */
hint = slapi_valueset_first_value(groups, &val);
while (val)
{
/* this makes a copy of the berval */
- slapi_mod_add_value(&smod, slapi_value_get_berval(val));
+ slapi_mod_add_value(smod, slapi_value_get_berval(val));
hint = slapi_valueset_next_value(groups, hint, &val);
}
- mods[0] = slapi_mod_get_ldapmod_passout(&smod);
+ mods[0] = slapi_mod_get_ldapmod_passout(smod);
mods[1] = 0;
slapi_modify_internal_set_pb(
@@ -2144,7 +2145,7 @@ int memberof_fix_memberof_callback(Slapi_Entry *e, void *callback_data)
slapi_pblock_get(mod_pb, SLAPI_PLUGIN_INTOP_RESULT, &rc);
ldap_mods_free(mods, 1);
- slapi_mod_done(&smod);
+ slapi_mod_free(&smod);
slapi_pblock_destroy(mod_pb);
} else {
/* No groups were found, so remove the memberOf attribute