summaryrefslogtreecommitdiffstats
path: root/ldap/servers/plugins/memberof
diff options
context:
space:
mode:
authorNathan Kinder <nkinder@redhat.com>2008-03-28 20:45:22 +0000
committerNathan Kinder <nkinder@redhat.com>2008-03-28 20:45:22 +0000
commit76b38517b66de8dd73d25155631e0116ba2d5ab0 (patch)
tree32ded52fc1c925c6215f8d170432cd8359332eb3 /ldap/servers/plugins/memberof
parent884f4588b93c7d7252b45317da5062ee9c786267 (diff)
downloadds-76b38517b66de8dd73d25155631e0116ba2d5ab0.tar.gz
ds-76b38517b66de8dd73d25155631e0116ba2d5ab0.tar.xz
ds-76b38517b66de8dd73d25155631e0116ba2d5ab0.zip
Resolves: 439097
Summary: Handle delete modify of all present member values. When doing a delete modify, we should treat it the same as a replace when no deletion values are specified.
Diffstat (limited to 'ldap/servers/plugins/memberof')
-rw-r--r--ldap/servers/plugins/memberof/memberof.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/ldap/servers/plugins/memberof/memberof.c b/ldap/servers/plugins/memberof/memberof.c
index 4102a880..5c69fda5 100644
--- a/ldap/servers/plugins/memberof/memberof.c
+++ b/ldap/servers/plugins/memberof/memberof.c
@@ -654,8 +654,19 @@ int memberof_postop_modify(Slapi_PBlock *pb)
case LDAP_MOD_DELETE:
{
- /* remove group DN from targets */
- memberof_del_smod_list(pb, dn, smod);
+ /* If there are no values in the smod, we should
+ * just do a replace instead. The user is just
+ * trying to delete all members from this this
+ * entry, which the replace code deals with. */
+ if (slapi_mod_get_num_values(smod) == 0)
+ {
+ memberof_replace_list(pb, dn);
+ }
+ else
+ {
+ /* remove group DN from target values in smod*/
+ memberof_del_smod_list(pb, dn, smod);
+ }
break;
}