]> git.sur5r.net Git - openldap/commitdiff
ITS#5584
authorQuanah Gibson-Mount <quanah@openldap.org>
Thu, 10 Jul 2008 02:00:31 +0000 (02:00 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Thu, 10 Jul 2008 02:00:31 +0000 (02:00 +0000)
CHANGES
servers/slapd/overlays/memberof.c

diff --git a/CHANGES b/CHANGES
index 325cce44a2203f816fc4e6a3881484f6a2213282..c6c2340a707e3cb95497c95bb82cd866eb3df45e 100644 (file)
--- 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)
index 09edce82b7f6f662703849bf90c0132c9c61f8a2..f289b82470b3f53e323b56bf132dbf8ff34252c0 100644 (file)
@@ -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 */