]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/modify.c
Fix corrupted CSN issue
[openldap] / servers / slapd / modify.c
index d0282b16e6039ca45b70e5303eab6cd78aaf2624..7adc30469c34ceeb1d5b24b6cc94f7b0a05f3299 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2007 The OpenLDAP Foundation.
+ * Copyright 1998-2009 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -268,6 +268,7 @@ fe_op_modify( Operation *op, SlapReply *rs )
        if ( op->orm_increment && !SLAP_INCREMENT( op->o_bd ) ) {
                send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                        "modify/increment not supported in context" );
+               goto cleanup;
        }
 
        /*
@@ -383,6 +384,10 @@ slap_mods_no_user_mod_check(
                        continue;
                }
 
+               if ( ml->sml_flags & SLAP_MOD_INTERNAL ) {
+                       continue;
+               }
+
                if ( get_relax( op ) ) {
                        if ( ml->sml_desc->ad_type->sat_flags & SLAP_AT_MANAGEABLE ) {
                                ml->sml_flags |= SLAP_MOD_MANAGING;
@@ -585,6 +590,7 @@ int slap_mods_check(
                                        ml->sml_values[nvals] = pval;
                                }
                        }
+                       ml->sml_values[nvals].bv_len = 0;
                        ml->sml_numvals = nvals;
 
                        /*