The branch, master has been updated
       via  c47d73f s4:dsdb/repl: ldb_errstring() takes a 'struct ldb_context' 
not 'int'
       via  0b926a2 s4:dsdb/repl: make sure instanceType_e is not changed by a 
reallocation
       via  d81d6af s4:dsdb/repl: avoid reallocation of msg->elements
      from  9566786 s4-dsdb: Add mem_ctx argument to samdb_ntds_settings_dn

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit c47d73f6c495d1585fa369c75da1173e78002da0
Author: Stefan Metzmacher <[email protected]>
Date:   Tue Aug 14 10:46:26 2012 +0200

    s4:dsdb/repl: ldb_errstring() takes a 'struct ldb_context' not 'int'
    
    metze
    
    Autobuild-User(master): Stefan Metzmacher <[email protected]>
    Autobuild-Date(master): Tue Aug 14 13:58:31 CEST 2012 on sn-devel-104

commit 0b926a27d8984a3e8ad9cefa49981f9ab2dd6480
Author: Stefan Metzmacher <[email protected]>
Date:   Mon Aug 13 15:33:49 2012 +0200

    s4:dsdb/repl: make sure instanceType_e is not changed by a reallocation
    
    Pair-Programmed-With: Björn Baumbach <[email protected]>
    
    metze

commit d81d6afd6f0d661b836885f57ab397c1e905a90b
Author: Stefan Metzmacher <[email protected]>
Date:   Mon Aug 13 15:31:16 2012 +0200

    s4:dsdb/repl: avoid reallocation of msg->elements
    
    The index into the elements needs to match between
    msg->elements and md->ctr.ctr1.array, which means we should
    pre-allocate them with the same size.
    
    Pair-Programmed-With: Björn Baumbach <[email protected]>
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source4/dsdb/repl/replicated_objects.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/repl/replicated_objects.c 
b/source4/dsdb/repl/replicated_objects.c
index 564befe..829c440 100644
--- a/source4/dsdb/repl/replicated_objects.c
+++ b/source4/dsdb/repl/replicated_objects.c
@@ -258,7 +258,7 @@ WERROR dsdb_convert_object_ex(struct ldb_context *ldb,
 
        msg->num_elements       = in->object.attribute_ctr.num_attributes;
        msg->elements           = talloc_array(msg, struct ldb_message_element,
-                                              msg->num_elements);
+                                              msg->num_elements + 1); /* +1 
because of the RDN attribute */
        W_ERROR_HAVE_NO_MEMORY(msg->elements);
 
        md = talloc(mem_ctx, struct replPropertyMetaDataBlob);
@@ -372,7 +372,6 @@ WERROR dsdb_convert_object_ex(struct ldb_context *ldb,
                   must be used on the client with TYPE_WRITE removed
                */
                if (instanceType & INSTANCE_TYPE_WRITE) {
-                       instanceType &= ~INSTANCE_TYPE_WRITE;
                        /*
                         * Make sure we do not change the order
                         * of msg->elements!
@@ -382,7 +381,18 @@ WERROR dsdb_convert_object_ex(struct ldb_context *ldb,
                         * instead of
                         * ldb_msg_remove_attr(msg, "instanceType");
                         */
+                       struct ldb_message_element *e;
+
+                       e = ldb_msg_find_element(msg, "instanceType");
+                       if (e != instanceType_e) {
+                               DEBUG(0,("instanceType_e[%p] changed to 
e[%p]\n",
+                                        instanceType_e, e));
+                               return WERR_FOOBAR;
+                       }
+
                        instanceType_e->num_values = 0;
+
+                       instanceType &= ~INSTANCE_TYPE_WRITE;
                        if (ldb_msg_add_fmt(msg, "instanceType", "%d", 
instanceType) != LDB_SUCCESS) {
                                return WERR_INTERNAL_ERROR;
                        }
@@ -752,7 +762,8 @@ WERROR dsdb_replicated_objects_commit(struct ldb_context 
*ldb,
                if (ret == LDB_SUCCESS) {
                        ret = ldb_transaction_commit(ldb);
                } else {
-                       DEBUG(0, ("Schema update now failed: %s\n", 
ldb_errstring(ret)));
+                       DEBUG(0, ("Schema update now failed: %s\n",
+                                 ldb_errstring(ldb)));
                        ldb_transaction_cancel(ldb);
                }
 


-- 
Samba Shared Repository

Reply via email to