From 6e5862913c6e1be584402de3f1d55f59a5cc9258 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount <quanah@openldap.org> Date: Thu, 10 Jul 2008 02:00:31 +0000 Subject: [PATCH] ITS#5584 --- CHANGES | 1 + servers/slapd/overlays/memberof.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 325cce44a2..c6c2340a70 100644 --- a/CHANGES +++ b/CHANGES @@ -14,6 +14,7 @@ OpenLDAP 2.4.11 Engineering Fixed slapd-meta link to slapd-ldap (ITS#5355) Fixed slapd-sock, back-shell buffer count (ITS#5558) Fixed slapo-dynlist dg attrs lookup (ITS#5583) + Fixed slapo-memberof replace handling (ITS#5584) Added slapo-nssov contrib module Fixed slapo-pcache handling of negative search caches (ITS#5546) Fixed slapo-ppolicy DNs with whitespaces (ITS#5552) diff --git a/servers/slapd/overlays/memberof.c b/servers/slapd/overlays/memberof.c index 09edce82b7..f289b82470 100644 --- a/servers/slapd/overlays/memberof.c +++ b/servers/slapd/overlays/memberof.c @@ -843,6 +843,12 @@ memberof_op_modify( Operation *op, SlapReply *rs ) break; case LDAP_MOD_REPLACE: + /* Handle this just like a delete (see above) */ + if ( !ml->sml_values ) { + mlp = &ml->sml_next; + break; + } + case LDAP_MOD_ADD: /* NOTE: right now, the attributeType we use * for member must have a normalized value */ @@ -1038,7 +1044,7 @@ memberof_op_modify( Operation *op, SlapReply *rs ) goto done2; } - if ( ml->sml_op == LDAP_MOD_DELETE ) { + if ( ml->sml_op == LDAP_MOD_DELETE || !ml->sml_values ) { break; } /* fall thru */ @@ -1305,7 +1311,7 @@ memberof_res_modify( Operation *op, SlapReply *rs ) ber_bvarray_free_x( vals, op->o_tmpmemctx ); } - if ( ml->sml_op == LDAP_MOD_DELETE ) { + if ( ml->sml_op == LDAP_MOD_DELETE || !mml->sml_values ) { break; } /* fall thru */ @@ -1362,7 +1368,7 @@ memberof_res_modify( Operation *op, SlapReply *rs ) ber_bvarray_free_x( vals, op->o_tmpmemctx ); } - if ( ml->sml_op == LDAP_MOD_DELETE ) { + if ( ml->sml_op == LDAP_MOD_DELETE || !ml->sml_values ) { break; } /* fall thru */ -- GitLab