Author: brad Date: 2005-08-17 05:15:31 +0000 (Wed, 17 Aug 2005) New Revision: 9351
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9351 Log: [EMAIL PROTECTED]: j0j0 | 2005-08-16 23:23:58 -0600 Removed LIBNET_JOIN_TORTURE level, as it became unnecessary once libnet_Join_primary_domain() handled netbios names better. Corrected libnet_JoinDomain() and libnet_JoinADSDomain(). Modified: branches/SOC/SAMBA_4_0/ branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c branches/SOC/SAMBA_4_0/source/libnet/libnet_join.h branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c Changeset: Property changes on: branches/SOC/SAMBA_4_0 ___________________________________________________________________ Name: svk:merge - 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9311 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5436 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5433 + 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9311 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5438 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5433 Modified: branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c =================================================================== --- branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c 2005-08-17 05:09:32 UTC (rev 9350) +++ branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c 2005-08-17 05:15:31 UTC (rev 9351) @@ -420,9 +420,9 @@ return status; } } - r->out.samr_pipe = samr_pipe; - r->out.samr_binding = samr_binding; - + r->out.samr_pipe = talloc_steal(mem_ctx, samr_pipe); + r->out.samr_binding = talloc_steal(mem_ctx, samr_binding); + r->out.user_handle = u_handle; /* Now, if it was AD, then we want to start looking changing a * few more things. Otherwise, we are done. */ if (realm) { @@ -432,10 +432,7 @@ r->out.realm = NULL; r->out.kvno = 0; - if (r->in.level != LIBNET_JOIN_TORTURE) { - /* This is probably not the best way to keep the connection from closing */ - talloc_free(tmp_ctx); - } + talloc_free(tmp_ctx); return NT_STATUS_OK; } @@ -641,11 +638,9 @@ return NT_STATUS_INTERNAL_DB_CORRUPTION; } } + + talloc_free(tmp_ctx); - if (r->in.level != LIBNET_JOIN_TORTURE) { - /* This is probably not the best way to keep the connection from closing */ - talloc_free(tmp_ctx); - } return NT_STATUS_OK; } @@ -677,12 +672,12 @@ } r2.in.domain_name = r->in.domain_name; - if ((r->in.level == LIBNET_JOIN_SPECIFIED) - || (r->in.level == LIBNET_JOIN_TORTURE)) { - r2.in.netbios_name = r->in.netbios_name; + if ((r2.in.netbios_name != NULL) && (r2.in.level != LIBNET_JOIN_AUTOMATIC)) { + r2.in.netbios_name = r->in.netbios_name; } else { r2.in.netbios_name = talloc_asprintf(mem_ctx, "%s", lp_netbios_name()); } + r2.in.account_name = talloc_asprintf(mem_ctx, "%s$", r2.in.netbios_name); /* Local secrets are stored in secrets.ldb */ @@ -703,10 +698,10 @@ return status; } - if (r->in.level == LIBNET_JOIN_TORTURE) { - /* get the SAMR pipe we left open in libnet_JoinDomain() */ - r->out.samr_pipe = r2.out.samr_pipe; - } + r->out.samr_pipe = r2.out.samr_pipe; + r->out.user_handle = r2.out.user_handle; + r->out.domain_sid = r2.out.domain_sid; + r->out.join_password = r2.out.join_password; sct = talloc_asprintf(mem_ctx, "%d", r->in.secure_channel_type); msg = ldb_msg_new(mem_ctx); @@ -776,8 +771,8 @@ msg->dn); return NT_STATUS_INTERNAL_DB_CORRUPTION; } + return NT_STATUS_OK; - } NTSTATUS libnet_Join(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, struct libnet_Join *r) @@ -800,7 +795,13 @@ r->in.secure_channel_type, r->in.domain_name); return NT_STATUS_INVALID_PARAMETER; } + r->out.error_string = r2.out.error_string; + r->out.join_password = r2.out.join_password; + r->out.domain_sid = r2.out.domain_sid; + r->out.samr_pipe = r2.out.samr_pipe; + r->out.user_handle = r2.out.user_handle; + return nt_status; } Modified: branches/SOC/SAMBA_4_0/source/libnet/libnet_join.h =================================================================== --- branches/SOC/SAMBA_4_0/source/libnet/libnet_join.h 2005-08-17 05:09:32 UTC (rev 9350) +++ branches/SOC/SAMBA_4_0/source/libnet/libnet_join.h 2005-08-17 05:15:31 UTC (rev 9351) @@ -24,7 +24,6 @@ enum libnet_Join_level { LIBNET_JOIN_AUTOMATIC, LIBNET_JOIN_SPECIFIED, - LIBNET_JOIN_TORTURE, }; struct libnet_JoinDomain { Modified: branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c =================================================================== --- branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c 2005-08-17 05:09:32 UTC (rev 9350) +++ branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c 2005-08-17 05:15:31 UTC (rev 9351) @@ -76,7 +76,6 @@ static struct DsSyncTest *test_create_context(TALLOC_CTX *mem_ctx) { NTSTATUS status; - BOOL ret = True; struct DsSyncTest *ctx; struct drsuapi_DsBindInfoCtr *our_bind_info; const char *binding = lp_parm_string(-1, "torture", "binding"); @@ -114,9 +113,10 @@ /* ctx->new_dc ...*/ #define TEST_MACHINE_NAME "smbtorturedssync" /*create machine account*/ - ctx->new_dc.join = torture_join_domain(TEST_MACHINE_NAME, lp_workgroup(), ACB_SVRTRUST, &new_dc_pass); + ctx->new_dc.join = torture_join_domain(mem_ctx, TEST_MACHINE_NAME, lp_workgroup(), ACB_SVRTRUST, &new_dc_pass); - /*ctx->libnet_ctx = libnet_context_init(NULL); + /* + ctx->libnet_ctx = libnet_context_init(NULL); if (ctx->libnet_ctx == NULL) { printf("libnet_context_init() failed, ctx->libnet_ctx not initialized.\n"); } @@ -148,17 +148,8 @@ cli_credentials_set_domain(ctx->new_dc.credentials, lp_workgroup(), CRED_SPECIFIED); cli_credentials_set_username(ctx->new_dc.credentials, TEST_MACHINE_NAME"$", CRED_SPECIFIED); - - /*here we need to tell determine the new_dc_pass out of the libnet_Join stuff*/ cli_credentials_set_password(ctx->new_dc.credentials, new_dc_pass, CRED_SPECIFIED); - /* - new_dc_pass = ctx->libnet_r.out.join_password; - printf("new_dc_pass: %s.\n",new_dc_pass); - - cli_credentials_set_password(ctx->new_dc.credentials, new_dc_pass, CRED_SPECIFIED); - */ - cli_credentials_set_secure_channel_type(ctx->new_dc.credentials, SEC_CHAN_BDC); ctx->new_dc.invocation_id = GUID_random(); @@ -228,8 +219,8 @@ if (ctx->new_dc.join) { torture_leave_domain(ctx->new_dc.join); } - */ talloc_free(ctx); + */ } static BOOL test_DsBind(struct DsSyncTest *ctx, struct cli_credentials *credentials, struct DsSyncBindInfo *b) Modified: branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c =================================================================== --- branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c 2005-08-17 05:09:32 UTC (rev 9350) +++ branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c 2005-08-17 05:15:31 UTC (rev 9351) @@ -273,7 +273,8 @@ } -struct test_join *torture_join_domain(const char *machine_name, +struct test_join *torture_join_domain(TALLOC_CTX *mem_ctx, + const char *machine_name, const char *domain, uint16_t acct_flags, const char **machine_password) @@ -288,9 +289,7 @@ struct libnet_Join libnet_r; struct test_join *tj; NTSTATUS status; - TALLOC_CTX *mem_ctx; - mem_ctx = talloc_init("torture_join_domain"); libnet_ctx = libnet_context_init(NULL); if (libnet_ctx == NULL) { talloc_free(mem_ctx); @@ -298,8 +297,7 @@ } libnet_ctx->cred = cmdline_credentials; libnet_r.in.domain_name = domain; - libnet_r.in.level = LIBNET_JOIN_TORTURE; /*LIBNET_JOIN_TORTURE indicates LIBNET_JOIN_SPECIFIED, and return from libnet_Join() - with an open SAMR pipe.*/ + libnet_r.in.level = LIBNET_JOIN_SPECIFIED; libnet_r.in.netbios_name = machine_name; if (acct_flags == ACB_SVRTRUST) { @@ -318,7 +316,6 @@ tj->dom_sid = dom_sid_string(mem_ctx, libnet_r.out.domain_sid); *machine_password = libnet_r.out.join_password; printf("torture_join_domain() complete.\n"); - talloc_free(mem_ctx); return tj; } @@ -366,7 +363,7 @@ struct test_join *join; }; -struct test_join_ads_dc *torture_join_domain_ads_dc(const char *machine_name, +struct test_join_ads_dc *torture_join_domain_ads_dc(TALLOC_CTX *mem_ctx, const char *machine_name, const char *domain, const char **machine_password) { @@ -377,7 +374,7 @@ return NULL; } - join->join = torture_join_domain(machine_name, domain, + join->join = torture_join_domain(mem_ctx, machine_name, domain, ACB_SVRTRUST, machine_password);