]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-monitor/modify.c
ITS#4780 plug leak
[openldap] / servers / slapd / back-monitor / modify.c
index eafeb6e063f6611815e5f4053d3f0d90f144f540..448bad1950bcbbff7d813bec6bee356d9b57e61f 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2001-2005 The OpenLDAP Foundation.
+ * Copyright 2001-2006 The OpenLDAP Foundation.
  * Portions Copyright 2001-2003 Pierangelo Masarati.
  * All rights reserved.
  *
@@ -45,15 +45,12 @@ monitor_back_modify( Operation *op, SlapReply *rs )
        if ( e == NULL ) {
                rs->sr_err = LDAP_NO_SUCH_OBJECT;
                if ( matched ) {
-#ifdef SLAP_ACL_HONOR_DISCLOSE
                        if ( !access_allowed_mask( op, matched,
                                        slap_schema.si_ad_entry,
                                        NULL, ACL_DISCLOSE, NULL, NULL ) )
                        {
                                /* do nothing */ ;
-                       } else 
-#endif /* SLAP_ACL_HONOR_DISCLOSE */
-                       {
+                       } else {
                                rs->sr_matched = matched->e_dn;
                        }
                }
@@ -69,10 +66,12 @@ monitor_back_modify( Operation *op, SlapReply *rs )
                rc = LDAP_INSUFFICIENT_ACCESS;
 
        } else {
+               assert( !SLAP_SHADOW( op->o_bd ) );
+               slap_mods_opattrs( op, &op->orm_modlist, 0 );
+
                rc = monitor_entry_modify( op, rs, e );
        }
 
-#ifdef SLAP_ACL_HONOR_DISCLOSE
        if ( rc != LDAP_SUCCESS ) {
                if ( !access_allowed_mask( op, e, slap_schema.si_ad_entry,
                                NULL, ACL_DISCLOSE, NULL, NULL ) )
@@ -80,7 +79,6 @@ monitor_back_modify( Operation *op, SlapReply *rs )
                        rc = LDAP_NO_SUCH_OBJECT;
                }
        }
-#endif /* SLAP_ACL_HONOR_DISCLOSE */
 
        rs->sr_err = rc;
        send_ldap_result( op, rs );