The branch, v4-0-test has been updated
       via  948ee9b7acd90b994bb9d9f7c1813a8eca430e4f (commit)
       via  7b87a58502a052de391f4e1c56ac78a8d35b4e34 (commit)
       via  e8081333b8d43d96974c9e06a26aaa25dd34da56 (commit)
       via  f82eec69f1846aa46e4afe595d956cfd2256c335 (commit)
       via  281bc76d3d7605f18ee914cf01dbf09062f5a5f0 (commit)
       via  669f137f0ecad10248a51b337c8f115d14d55b05 (commit)
      from  df2664ac94efbc2eee4d8a24a793e5f1e77b2d88 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit 948ee9b7acd90b994bb9d9f7c1813a8eca430e4f
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Wed Jan 23 15:44:02 2008 +1100

    Get more information from ldb when reporting a failed replication.
    
    Andrew Bartlett

commit 7b87a58502a052de391f4e1c56ac78a8d35b4e34
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Wed Jan 23 15:43:14 2008 +1100

    Fix DRSUAPI replication test - NET-API-BECOME-DC.
    
    The main change here is to work with the current module stack,
    replacing only the objectGUID module, rather than a number of modules.
    
    However, two changes were key:
     - Fixing a typo search_req->handle -> change_req->handle
     - Allowing an error of NO_SUCH_OBJECT - it is quite valid
       for the object not to exist when being replicated in.
    
    Other small changes were required to the ejs provision to match
    changes in that code.
    
    Andrew Bartlett

commit e8081333b8d43d96974c9e06a26aaa25dd34da56
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Wed Jan 23 15:34:44 2008 +1100

    Fix segfaults in codepaths only tested by the NET-API-BECOME-DC test.
    
    (I presume this has resulted from the global variable elimination)
    
    Perhaps the iconv handle argument to ndr_push_struct needs to be
    marked as 'not NULL' or similar?
    
    Andrew Bartlett

commit f82eec69f1846aa46e4afe595d956cfd2256c335
Merge: 281bc76d3d7605f18ee914cf01dbf09062f5a5f0 
df2664ac94efbc2eee4d8a24a793e5f1e77b2d88
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Wed Jan 23 15:09:55 2008 +1100

    Merge branch 'v4-0-test' of git://git.samba.org/samba into 4-0-local

commit 281bc76d3d7605f18ee914cf01dbf09062f5a5f0
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Wed Jan 23 09:00:00 2008 +1100

    Make ranged results tests in ldap.js easier to debug.
    
    This adds some extra information to the failure message, to chase down
    which test is failing.
    
    Andrew Bartlett

commit 669f137f0ecad10248a51b337c8f115d14d55b05
Author: Andrew Bartlett <[EMAIL PROTECTED]>
Date:   Wed Jan 23 08:57:16 2008 +1100

    ranged_results: fix use of uninitialised variable (end)
    
    This matches the range parsing in the search and callback - end was
    uninitilaised, causing occasional failures in make test.
    
    Andrew Bartlett

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

Summary of changes:
 source/dsdb/repl/replicated_objects.c          |    4 +-
 source/dsdb/samdb/ldb_modules/ranged_results.c |    6 +-
 source/dsdb/samdb/ldb_modules/repl_meta_data.c |  140 +++---------------------
 source/dsdb/schema/schema_syntax.c             |    4 +-
 source/libnet/libnet_become_dc.c               |   25 ++--
 source/torture/libnet/libnet_BecomeDC.c        |   37 +++---
 testprogs/ejs/ldap.js                          |   18 ++--
 7 files changed, 62 insertions(+), 172 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/dsdb/repl/replicated_objects.c 
b/source/dsdb/repl/replicated_objects.c
index 8aff134..552d83f 100644
--- a/source/dsdb/repl/replicated_objects.c
+++ b/source/dsdb/repl/replicated_objects.c
@@ -400,8 +400,8 @@ WERROR dsdb_extended_replicated_objects_commit(struct 
ldb_context *ldb,
 
        ret = ldb_extended(ldb, DSDB_EXTENDED_REPLICATED_OBJECTS_OID, out, 
&ext_res);
        if (ret != LDB_SUCCESS) {
-               DEBUG(0,("Failed to apply records: %d: %s\n",
-                       ret, ldb_strerror(ret)));
+               DEBUG(0,("Failed to apply records: %s: %s\n",
+                        ldb_errstring(ldb), ldb_strerror(ret)));
                talloc_free(out);
                return WERR_FOOBAR;
        }
diff --git a/source/dsdb/samdb/ldb_modules/ranged_results.c 
b/source/dsdb/samdb/ldb_modules/ranged_results.c
index 345b8b8..c527afc 100644
--- a/source/dsdb/samdb/ldb_modules/ranged_results.c
+++ b/source/dsdb/samdb/ldb_modules/ranged_results.c
@@ -153,8 +153,10 @@ static int rr_search(struct ldb_module *module, struct 
ldb_request *req)
                if (strncasecmp(p, ";range=", strlen(";range=")) != 0) {
                        continue;
                }
-               if (sscanf(p, ";range=%u-*", &start) == 1) {
-               } else if (sscanf(p, ";range=%u-%u", &start, &end) != 2) {
+               if (sscanf(p, ";range=%u-%u", &start, &end) == 2) {
+               } else if (sscanf(p, ";range=%u-*", &start) == 1) {
+                       end = (unsigned int)-1;
+               } else {
                        ldb_asprintf_errstring(module->ldb, "range request 
error: range requst malformed");
                        return LDB_ERR_UNWILLING_TO_PERFORM;
                }
diff --git a/source/dsdb/samdb/ldb_modules/repl_meta_data.c 
b/source/dsdb/samdb/ldb_modules/repl_meta_data.c
index 5a3cc4b..a21cf25 100644
--- a/source/dsdb/samdb/ldb_modules/repl_meta_data.c
+++ b/source/dsdb/samdb/ldb_modules/repl_meta_data.c
@@ -240,12 +240,9 @@ static int replmd_prepare_originating(struct ldb_module 
*module, struct ldb_requ
                                      struct ldb_dn *dn, const char *fn_name,
                                      int (*fn)(struct ldb_module *,
                                                struct ldb_request *,
-                                               const struct dsdb_schema *,
-                                               const struct 
dsdb_control_current_partition *))
+                                               const struct dsdb_schema *))
 {
        const struct dsdb_schema *schema;
-       const struct ldb_control *partition_ctrl;
-       const struct dsdb_control_current_partition *partition;
  
        /* do not manipulate our control entries */
        if (ldb_dn_is_special(dn)) {
@@ -260,46 +257,16 @@ static int replmd_prepare_originating(struct ldb_module 
*module, struct ldb_requ
                return LDB_ERR_CONSTRAINT_VIOLATION;
        }
 
-       partition_ctrl = ldb_request_get_control(req, 
DSDB_CONTROL_CURRENT_PARTITION_OID);
-       if (!partition_ctrl) {
-               ldb_debug_set(module->ldb, LDB_DEBUG_FATAL,
-                             "%s: no current partition control found",
-                             fn_name);
-               return LDB_ERR_CONSTRAINT_VIOLATION;
-       }
-
-       partition = talloc_get_type(partition_ctrl->data,
-                                   struct dsdb_control_current_partition);
-       if (!partition) {
-               ldb_debug_set(module->ldb, LDB_DEBUG_FATAL,
-                             "%s: current partition control contains invalid 
data",
-                             fn_name);
-               return LDB_ERR_CONSTRAINT_VIOLATION;
-       }
-
-       if (partition->version != DSDB_CONTROL_CURRENT_PARTITION_VERSION) {
-               ldb_debug_set(module->ldb, LDB_DEBUG_FATAL,
-                             "%s: current partition control contains invalid 
version [%u != %u]\n",
-                             fn_name, partition->version, 
DSDB_CONTROL_CURRENT_PARTITION_VERSION);
-               return LDB_ERR_CONSTRAINT_VIOLATION;
-       }
-
-       return fn(module, req, schema, partition);
+       return fn(module, req, schema);
 }
 
 static int replmd_add_originating(struct ldb_module *module,
                                  struct ldb_request *req,
-                                 const struct dsdb_schema *schema,
-                                 const struct dsdb_control_current_partition 
*partition)
+                                 const struct dsdb_schema *schema)
 {
        enum ndr_err_code ndr_err;
        struct ldb_request *down_req;
        struct ldb_message *msg;
-       uint32_t instance_type;
-       struct ldb_dn *new_dn;
-       const char *rdn_name;
-       const char *rdn_name_upper;
-       const struct ldb_val *rdn_value = NULL;
        const struct dsdb_attribute *rdn_attr = NULL;
        struct GUID guid;
        struct ldb_val guid_value;
@@ -321,12 +288,6 @@ static int replmd_add_originating(struct ldb_module 
*module,
                return LDB_ERR_UNWILLING_TO_PERFORM;
        }
 
-       if (ldb_msg_find_element(req->op.add.message, "instanceType")) {
-               ldb_debug_set(module->ldb, LDB_DEBUG_ERROR,
-                             "replmd_add_originating: it's not allowed to add 
an object with instanceType\n");
-               return LDB_ERR_UNWILLING_TO_PERFORM;
-       }
-
        /* Get a sequence number from the backend */
        ret = ldb_sequence_number(module->ldb, LDB_SEQ_NEXT, &seq_num);
        if (ret != LDB_SUCCESS) {
@@ -368,32 +329,9 @@ static int replmd_add_originating(struct ldb_module 
*module,
                return LDB_ERR_OPERATIONS_ERROR;
        }
 
-       /*
-        * get details of the rdn name
-        */
-       rdn_name        = ldb_dn_get_rdn_name(msg->dn);
-       if (!rdn_name) {
-               talloc_free(down_req);
-               ldb_oom(module->ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-       rdn_attr        = dsdb_attribute_by_lDAPDisplayName(schema, rdn_name);
-       if (!rdn_attr) {
-               talloc_free(down_req);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-       rdn_value       = ldb_dn_get_rdn_val(msg->dn);
-       if (!rdn_value) {
-               talloc_free(down_req);
-               ldb_oom(module->ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-
        /* 
         * remove autogenerated attributes
         */
-       ldb_msg_remove_attr(msg, rdn_name);
-       ldb_msg_remove_attr(msg, "name");
        ldb_msg_remove_attr(msg, "whenCreated");
        ldb_msg_remove_attr(msg, "whenChanged");
        ldb_msg_remove_attr(msg, "uSNCreated");
@@ -401,69 +339,14 @@ static int replmd_add_originating(struct ldb_module 
*module,
        ldb_msg_remove_attr(msg, "replPropertyMetaData");
 
        /*
-        * TODO: construct a new DN out of:
-        *       - the parent DN
-        *       - the upper case of rdn_attr->LDAPDisplayName
-        *       - rdn_value
-        */
-       new_dn = ldb_dn_copy(msg, msg->dn);
-       if (!new_dn) {
-               talloc_free(down_req);
-               ldb_oom(module->ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-       rdn_name_upper = strupper_talloc(msg, rdn_attr->lDAPDisplayName);
-       if (!rdn_name_upper) {
-               talloc_free(down_req);
-               ldb_oom(module->ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-       ret = ldb_dn_set_component(new_dn, 0, rdn_name_upper, *rdn_value);
-       if (ret != LDB_SUCCESS) {
-               talloc_free(down_req);
-               ldb_oom(module->ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-       msg->dn = new_dn;
-
-       /*
-        * TODO: calculate correct instance type
-        */
-       instance_type = INSTANCE_TYPE_WRITE;
-       if (ldb_dn_compare(partition->dn, msg->dn) == 0) {
-               instance_type |= INSTANCE_TYPE_IS_NC_HEAD;
-               if (ldb_dn_compare(msg->dn, samdb_base_dn(module->ldb)) != 0) {
-                       instance_type |= INSTANCE_TYPE_NC_ABOVE;
-               }
-       }
-
-       /*
         * readd replicated attributes
         */
-       ret = ldb_msg_add_value(msg, rdn_attr->lDAPDisplayName, rdn_value, 
NULL);
-       if (ret != LDB_SUCCESS) {
-               talloc_free(down_req);
-               ldb_oom(module->ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-       ret = ldb_msg_add_value(msg, "name", rdn_value, NULL);
-       if (ret != LDB_SUCCESS) {
-               talloc_free(down_req);
-               ldb_oom(module->ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
        ret = ldb_msg_add_string(msg, "whenCreated", time_str);
        if (ret != LDB_SUCCESS) {
                talloc_free(down_req);
                ldb_oom(module->ldb);
                return LDB_ERR_OPERATIONS_ERROR;
        }
-       ret = ldb_msg_add_fmt(msg, "instanceType", "%u", instance_type);
-       if (ret != LDB_SUCCESS) {
-               talloc_free(down_req);
-               ldb_oom(module->ldb);
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
 
        /* build the replication meta_data */
        ZERO_STRUCT(nmd);
@@ -598,8 +481,7 @@ static int replmd_add(struct ldb_module *module, struct 
ldb_request *req)
 
 static int replmd_modify_originating(struct ldb_module *module,
                                     struct ldb_request *req,
-                                    const struct dsdb_schema *schema,
-                                    const struct 
dsdb_control_current_partition *partition)
+                                    const struct dsdb_schema *schema)
 {
        struct ldb_request *down_req;
        struct ldb_message *msg;
@@ -806,10 +688,16 @@ static int replmd_replicated_apply_add(struct 
replmd_replicated_request *ar)
        return ldb_next_request(ar->module, ar->sub.change_req);
 #else
        ret = ldb_next_request(ar->module, ar->sub.change_req);
-       if (ret != LDB_SUCCESS) return replmd_replicated_request_error(ar, ret);
+       if (ret != LDB_SUCCESS) {
+               ldb_asprintf_errstring(ar->module->ldb, "Failed to add 
replicated object %s: %s", 
ldb_dn_get_linearized(ar->sub.change_req->op.add.message->dn), 
+                                      ldb_errstring(ar->module->ldb));
+               return replmd_replicated_request_error(ar, ret);
+       }
 
-       ar->sub.change_ret = ldb_wait(ar->sub.search_req->handle, LDB_WAIT_ALL);
+       ar->sub.change_ret = ldb_wait(ar->sub.change_req->handle, LDB_WAIT_ALL);
        if (ar->sub.change_ret != LDB_SUCCESS) {
+               ldb_asprintf_errstring(ar->module->ldb, "Failed while waiting 
on add replicated object %s: %s", 
ldb_dn_get_linearized(ar->sub.change_req->op.add.message->dn), 
+                                      ldb_errstring(ar->module->ldb));
                return replmd_replicated_request_error(ar, ar->sub.change_ret);
        }
 
@@ -1053,7 +941,7 @@ static int replmd_replicated_apply_merge(struct 
replmd_replicated_request *ar)
        ret = ldb_next_request(ar->module, ar->sub.change_req);
        if (ret != LDB_SUCCESS) return replmd_replicated_request_error(ar, ret);
 
-       ar->sub.change_ret = ldb_wait(ar->sub.search_req->handle, LDB_WAIT_ALL);
+       ar->sub.change_ret = ldb_wait(ar->sub.change_req->handle, LDB_WAIT_ALL);
        if (ar->sub.change_ret != LDB_SUCCESS) {
                return replmd_replicated_request_error(ar, ar->sub.change_ret);
        }
@@ -1137,7 +1025,7 @@ static int replmd_replicated_apply_search(struct 
replmd_replicated_request *ar)
        if (ret != LDB_SUCCESS) return replmd_replicated_request_error(ar, ret);
 
        ar->sub.search_ret = ldb_wait(ar->sub.search_req->handle, LDB_WAIT_ALL);
-       if (ar->sub.search_ret != LDB_SUCCESS) {
+       if (ar->sub.search_ret != LDB_SUCCESS && ar->sub.search_ret != 
LDB_ERR_NO_SUCH_OBJECT) {
                return replmd_replicated_request_error(ar, ar->sub.search_ret);
        }
        if (ar->sub.search_msg) {
diff --git a/source/dsdb/schema/schema_syntax.c 
b/source/dsdb/schema/schema_syntax.c
index 9bc51c6..2c133b6 100644
--- a/source/dsdb/schema/schema_syntax.c
+++ b/source/dsdb/schema/schema_syntax.c
@@ -939,7 +939,7 @@ static WERROR dsdb_syntax_DN_BINARY_drsuapi_to_ldb(const 
struct dsdb_schema *sch
                }
 
                ndr_err = ndr_pull_struct_blob_all(in->value_ctr.values[i].blob,
-                                                  out->values, NULL, &id3b,
+                                                  out->values, 
lp_iconv_convenience(global_loadparm), &id3b,
                                                   
(ndr_pull_flags_fn_t)ndr_pull_drsuapi_DsReplicaObjectIdentifier3Binary);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        NTSTATUS status = ndr_map_error2ntstatus(ndr_err);
@@ -997,7 +997,7 @@ static WERROR dsdb_syntax_DN_BINARY_ldb_to_drsuapi(const 
struct dsdb_schema *sch
                id3b.dn         = (const char *)in->values[i].data;
                id3b.binary     = data_blob(NULL, 0);
 
-               ndr_err = ndr_push_struct_blob(&blobs[i], blobs, NULL, &id3b,
+               ndr_err = ndr_push_struct_blob(&blobs[i], blobs, 
lp_iconv_convenience(global_loadparm), &id3b,
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3Binary);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        NTSTATUS status = ndr_map_error2ntstatus(ndr_err);
diff --git a/source/libnet/libnet_become_dc.c b/source/libnet/libnet_become_dc.c
index 862631f..f2c1f70 100644
--- a/source/libnet/libnet_become_dc.c
+++ b/source/libnet/libnet_become_dc.c
@@ -1687,6 +1687,7 @@ static void becomeDC_drsuapi1_add_entry_send(struct 
libnet_BecomeDC_state *s)
        struct drsuapi_DsReplicaObjectIdentifier *identifier;
        uint32_t num_attrs, i = 0;
        struct drsuapi_DsReplicaAttribute *attrs;
+       struct smb_iconv_convenience *iconv_convenience = 
lp_iconv_convenience(s->libnet->lp_ctx);
        enum ndr_err_code ndr_err;
        bool w2k3;
 
@@ -1785,7 +1786,7 @@ static void becomeDC_drsuapi1_add_entry_send(struct 
libnet_BecomeDC_state *s)
                                               NULL);
                if (composite_nomem(v, c)) return;
 
-               ndr_err = ndr_push_struct_blob(&vd[0], vd, NULL, 
v,(ndr_push_flags_fn_t)ndr_push_security_descriptor);
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, iconv_convenience, 
v,(ndr_push_flags_fn_t)ndr_push_security_descriptor);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
                        if (!composite_is_ok(c)) return;
@@ -1844,7 +1845,7 @@ static void becomeDC_drsuapi1_add_entry_send(struct 
libnet_BecomeDC_state *s)
                                                          
s->forest.schema_dn_str);
                if (composite_nomem(v[0].dn, c)) return;
 
-               ndr_err = ndr_push_struct_blob(&vd[0], vd, NULL, &v[0], 
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, iconv_convenience, 
&v[0], 
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
@@ -1874,7 +1875,7 @@ static void becomeDC_drsuapi1_add_entry_send(struct 
libnet_BecomeDC_state *s)
 
                v = &s->dest_dsa.invocation_id;
 
-               ndr_err = ndr_push_struct_blob(&vd[0], vd, NULL, v, 
(ndr_push_flags_fn_t)ndr_push_GUID);
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, iconv_convenience, 
v, (ndr_push_flags_fn_t)ndr_push_GUID);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
                        if (!composite_is_ok(c)) return;
@@ -1913,21 +1914,21 @@ static void becomeDC_drsuapi1_add_entry_send(struct 
libnet_BecomeDC_state *s)
                v[2].sid                = s->zero_sid;
                v[2].dn                 = s->forest.schema_dn_str;
 
-               ndr_err = ndr_push_struct_blob(&vd[0], vd, NULL, &v[0],
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, iconv_convenience, 
&v[0],
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
                        if (!composite_is_ok(c)) return;
                }
 
-               ndr_err = ndr_push_struct_blob(&vd[1], vd, NULL, &v[1],
+               ndr_err = ndr_push_struct_blob(&vd[1], vd, iconv_convenience, 
&v[1],
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
                        if (!composite_is_ok(c)) return;
                }
 
-               ndr_err = ndr_push_struct_blob(&vd[2], vd, NULL, &v[2],
+               ndr_err = ndr_push_struct_blob(&vd[2], vd, iconv_convenience, 
&v[2],
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
@@ -1969,21 +1970,21 @@ static void becomeDC_drsuapi1_add_entry_send(struct 
libnet_BecomeDC_state *s)
                v[2].sid                = s->zero_sid;
                v[2].dn                 = s->forest.schema_dn_str;
 
-               ndr_err = ndr_push_struct_blob(&vd[0], vd, NULL, &v[0],
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, iconv_convenience, 
&v[0],
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
                        if (!composite_is_ok(c)) return;
                }
 
-               ndr_err = ndr_push_struct_blob(&vd[1], vd, NULL, &v[1],
+               ndr_err = ndr_push_struct_blob(&vd[1], vd, iconv_convenience, 
&v[1],
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
                        if (!composite_is_ok(c)) return;
                }
 
-               ndr_err = ndr_push_struct_blob(&vd[2], vd, NULL, &v[2],
+               ndr_err = ndr_push_struct_blob(&vd[2], vd, iconv_convenience, 
&v[2],
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
@@ -2017,7 +2018,7 @@ static void becomeDC_drsuapi1_add_entry_send(struct 
libnet_BecomeDC_state *s)
                v[0].sid                = s->zero_sid;
                v[0].dn                 = s->forest.schema_dn_str;
 
-               ndr_err = ndr_push_struct_blob(&vd[0], vd, NULL, &v[0],
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, iconv_convenience, 
&v[0],
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
@@ -2049,7 +2050,7 @@ static void becomeDC_drsuapi1_add_entry_send(struct 
libnet_BecomeDC_state *s)
                v[0].sid                = s->zero_sid;
                v[0].dn                 = s->domain.dn_str;
 
-               ndr_err = ndr_push_struct_blob(&vd[0], vd, NULL, &v[0],
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, iconv_convenience, 
&v[0],
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
@@ -2131,7 +2132,7 @@ static void becomeDC_drsuapi1_add_entry_send(struct 
libnet_BecomeDC_state *s)
                v[0].sid                = s->zero_sid;
                v[0].dn                 = s->dest_dsa.computer_dn_str;
 
-               ndr_err = ndr_push_struct_blob(&vd[0], vd, NULL, &v[0],
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, iconv_convenience, 
&v[0],
                                               
(ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        c->status = ndr_map_error2ntstatus(ndr_err);
diff --git a/source/torture/libnet/libnet_BecomeDC.c 
b/source/torture/libnet/libnet_BecomeDC.c
index 10625b2..932498a 100644
--- a/source/torture/libnet/libnet_BecomeDC.c
+++ b/source/torture/libnet/libnet_BecomeDC.c
@@ -60,7 +60,9 @@ struct test_become_dc_state {
                const char *configdn_ldb;
                const char *schemadn_ldb;
                const char *secrets_ldb;
+               const char *templates_ldb;
                const char *secrets_keytab;
+               const char *dns_keytab;
        } path;
 };
 
@@ -195,25 +197,13 @@ static NTSTATUS test_become_dc_prepare_db(void 
*private_data,
                "subobj.SCHEMADN     = \"%s\";\n"
                "subobj.SCHEMADN_LDB = \"%s\";\n"
                "subobj.HOSTNAME     = \"%s\";\n"
-               "subobj.DNSNAME      = \"%s\";\n"
+               "subobj.REALM        = \"%s\";\n"
+               "subobj.DOMAIN       = \"%s\";\n"
                "subobj.DEFAULTSITE  = \"%s\";\n"
                "\n"
-               "modules_list        = new Array(\"rootdse\",\n"
-               "                                \"kludge_acl\",\n"
-               "                                \"paged_results\",\n"
-               "                                \"server_sort\",\n"
-               "                                \"extended_dn\",\n"
-               "                                \"asq\",\n"
-               "                                \"samldb\",\n"
-               "                                \"operational\",\n"
-               "                                \"objectclass\",\n"
-               "                                \"rdn_name\",\n"
-               "                                \"show_deleted\",\n"
-               "                                \"partition\");\n"
-               "subobj.MODULES_LIST = join(\",\", modules_list);\n"
-               "subobj.DOMAINDN_MOD = 
\"pdc_fsmo,password_hash,repl_meta_data\";\n"
-               "subobj.CONFIGDN_MOD = \"naming_fsmo,repl_meta_data\";\n"
-               "subobj.SCHEMADN_MOD = \"schema_fsmo,repl_meta_data\";\n"
+               "subobj.DOMAINDN_MOD2 = \",repl_meta_data\";\n"
+               "subobj.CONFIGDN_MOD2 = \",repl_meta_data\";\n"
+               "subobj.SCHEMADN_MOD2 = \",repl_meta_data\";\n"
                "\n"
                "subobj.KRBTGTPASS   = \"_NOT_USED_\";\n"
                "subobj.MACHINEPASS  = \"%s\";\n"
@@ -222,7 +212,9 @@ static NTSTATUS test_become_dc_prepare_db(void 
*private_data,
                "var paths = provision_default_paths(subobj);\n"
                "paths.samdb = \"%s\";\n"
                "paths.secrets = \"%s\";\n"
+               "paths.templates = \"%s\";\n"
                "paths.keytab = \"%s\";\n"
+               "paths.dns_keytab = \"%s\";\n"
                "\n"
                "var system_session = system_session();\n"
                "\n"
@@ -238,12 +230,15 @@ static NTSTATUS test_become_dc_prepare_db(void 
*private_data,
                p->forest->schema_dn_str,       /* subobj.SCHEMADN */
                s->path.schemadn_ldb,           /* subobj.SCHEMADN_LDB */
                p->dest_dsa->netbios_name,      /* subobj.HOSTNAME */
-               p->dest_dsa->dns_name,          /* subobj.DNSNAME */
+               torture_join_dom_dns_name(s->tj),/* subobj.REALM */
+               torture_join_dom_netbios_name(s->tj),/* subobj.DOMAIN */
                p->dest_dsa->site_name,         /* subobj.DEFAULTSITE */
                cli_credentials_get_password(s->machine_account),/* 
subobj.MACHINEPASS */
                s->path.samdb_ldb,              /* paths.samdb */
+               s->path.templates_ldb,          /* paths.templates */
                s->path.secrets_ldb,            /* paths.secrets */
-               s->path.secrets_keytab);        /* paths.keytab */
+               s->path.secrets_keytab,         /* paths.keytab */
+               s->path.dns_keytab);            /* paths.dns_keytab */
        NT_STATUS_HAVE_NO_MEMORY(ejs);
 
        ret = test_run_ejs(ejs);
@@ -854,8 +849,12 @@ bool torture_net_become_dc(struct torture_context *torture)
        if (!s->path.schemadn_ldb) return false;
        s->path.secrets_ldb     = talloc_asprintf(s, "%s_secrets.ldb", 
s->netbios_name);
        if (!s->path.secrets_ldb) return false;
+       s->path.templates_ldb   = talloc_asprintf(s, "%s_templates.ldb", 
s->netbios_name);
+       if (!s->path.templates_ldb) return false;
        s->path.secrets_keytab  = talloc_asprintf(s, "%s_secrets.keytab", 
s->netbios_name);
        if (!s->path.secrets_keytab) return false;
+       s->path.dns_keytab      = talloc_asprintf(s, "%s_dns.keytab", 
s->netbios_name);
+       if (!s->path.dns_keytab) return false;
 
        /* Join domain as a member server. */
        s->tj = torture_join_domain(torture, s->netbios_name,
diff --git a/testprogs/ejs/ldap.js b/testprogs/ejs/ldap.js
index 836b726..090f93b 100755
--- a/testprogs/ejs/ldap.js
+++ b/testprogs/ejs/ldap.js
@@ -240,7 +240,7 @@ servicePrincipalName: host/ldaptest2computer29
            var attrs = new Array("servicePrincipalName;range=0-*");
            var res = ldb.search("(cn=ldaptest2computer))", base_dn, 
ldb.SCOPE_SUBTREE, attrs);
            if (res.error != 0 || res.msgs.length != 1) {
-                   println("Could not find (cn=ldaptest2computer)");
+                   println("Could not find (cn=ldaptest2computer) for 
servicePrincipalName;range=0-*");
                    assert(res.error == 0);
                    assert(res.msgs.length == 1);
            }
@@ -250,7 +250,7 @@ servicePrincipalName: host/ldaptest2computer29


-- 
Samba Shared Repository

Reply via email to