Author: brad Date: 2005-08-22 02:00:48 +0000 (Mon, 22 Aug 2005) New Revision: 9467
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9467 Log: [EMAIL PROTECTED]: j0j0 | 2005-08-21 20:06:55 -0600 Another round of bugfixing. Modified: branches/SOC/SAMBA_4_0/ branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c branches/SOC/SAMBA_4_0/source/utils/net/net_join.c Changeset: Property changes on: branches/SOC/SAMBA_4_0 ___________________________________________________________________ Name: svk:merge - 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9397 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5508 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5497 + 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9397 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5510 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5497 Modified: branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c =================================================================== --- branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c 2005-08-22 01:53:06 UTC (rev 9466) +++ branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c 2005-08-22 02:00:48 UTC (rev 9467) @@ -66,7 +66,7 @@ struct samr_LookupNames ln; struct samr_OpenUser ou; struct samr_CreateUser2 cu; - struct policy_handle u_handle; + struct policy_handle *u_handle; struct samr_QueryUserInfo qui; struct samr_SetUserInfo sui; union samr_UserInfo u_info; @@ -88,7 +88,8 @@ return NT_STATUS_NO_MEMORY; } - + u_handle = talloc(tmp_ctx, struct policy_handle); + /* prepare connect to the LSA pipe of PDC */ c.level = LIBNET_RPC_CONNECT_PDC; c.in.domain_name = r->in.domain_name; @@ -270,13 +271,15 @@ } /* prepare samr_CreateUser2 */ - ZERO_STRUCT(u_handle); + ZERO_STRUCT(*u_handle); +/* ZERO_STRUCT(r->out.user_handle);*/ cu.in.domain_handle = &d_handle; cu.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; samr_account_name.string = r->in.account_name; cu.in.account_name = &samr_account_name; cu.in.acct_flags = r->in.acct_type; - cu.out.user_handle = &u_handle; + cu.out.user_handle = u_handle; +/* cu.out.user_handle = r->out.user_handle;*/ cu.out.rid = &rid; cu.out.access_granted = &access_granted; @@ -323,11 +326,13 @@ } /* prepare samr_OpenUser */ - ZERO_STRUCT(u_handle); + ZERO_STRUCT(*u_handle); +/* ZERO_STRUCT(r->out.user_handle);*/ ou.in.domain_handle = &d_handle; ou.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; ou.in.rid = ln.out.rids.ids[0]; - ou.out.user_handle = &u_handle; + ou.out.user_handle = u_handle; +/* ou.out.user_handle = r->out.user_handle;*/ /* 6. do a samr_OpenUser to get a user handle */ status = dcerpc_samr_OpenUser(samr_pipe, tmp_ctx, &ou); @@ -341,7 +346,8 @@ } /* Find out what password policy this user has */ - pwp.in.user_handle = &u_handle; + pwp.in.user_handle = u_handle; +/* pwp.in.user_handle = r->out.user_handle;*/ status = dcerpc_samr_GetUserPwInfo(samr_pipe, tmp_ctx, &pwp); if (NT_STATUS_IS_OK(status)) { @@ -354,7 +360,8 @@ r2.samr_handle.level = LIBNET_SET_PASSWORD_SAMR_HANDLE; r2.samr_handle.in.account_name = r->in.account_name; r2.samr_handle.in.newpassword = r->out.join_password; - r2.samr_handle.in.user_handle = &u_handle; + r2.samr_handle.in.user_handle = u_handle; +/* r2.samr_handle.in.user_handle = r->out.user_handle;*/ r2.samr_handle.in.dcerpc_pipe = samr_pipe; status = libnet_SetPassword(ctx, tmp_ctx, &r2); @@ -367,7 +374,8 @@ } /* prepare samr_QueryUserInfo (get flags) */ - qui.in.user_handle = &u_handle; + qui.in.user_handle = u_handle; +/* qui.in.user_handle = r->out.user_handle;*/ qui.in.level = 16; status = dcerpc_samr_QueryUserInfo(samr_pipe, tmp_ctx, &qui); @@ -405,7 +413,8 @@ ZERO_STRUCT(u_info); u_info.info16.acct_flags = acct_flags; - sui.in.user_handle = &u_handle; + sui.in.user_handle = u_handle; +/* sui.in.user_handle = r->out.user_handle;*/ sui.in.info = &u_info; sui.in.level = 16; @@ -421,7 +430,8 @@ } 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; + r->out.user_handle = talloc_steal(mem_ctx, u_handle); + /* Now, if it was AD, then we want to start looking changing a * few more things. Otherwise, we are done. */ if (realm) { @@ -469,7 +479,12 @@ "dNSHostName", NULL, }; - + + /* + Valgrind complains about uninitialized values unless we set this. + */ + r->out.error_string = NULL; + /* We need to convert between a samAccountName and domain to a * DN in the directory. The correct way to do this is with * DRSUAPI CrackNames */ @@ -645,8 +660,10 @@ } } -/* testing*/ - r->out.error_string = NULL; +/* testing - if this talloc_free() executes, we segfault if we try and use the + talloc_steal()'ed open pipe and handle (like we do in testjoin.c). +.*/ + talloc_free(tmp_ctx); @@ -708,16 +725,11 @@ } r->out.samr_pipe = talloc_steal(mem_ctx, r2.out.samr_pipe); + /*r->out.user_handle = talloc_steal(mem_ctx, r2.out.user_handle);*/ r->out.user_handle = talloc_steal(mem_ctx, r2.out.user_handle); r->out.domain_sid = talloc_steal(mem_ctx, r2.out.domain_sid); r->out.join_password = talloc_steal(mem_ctx, r2.out.join_password); - /* - r2.out.samr_pipe = talloc_steal(mem_ctx, r->out.samr_pipe); - r2.out.user_handle = talloc_steal(mem_ctx, r->out.user_handle); - r2.out.domain_sid = talloc_steal(mem_ctx, r->out.domain_sid); - r2.out.join_password = talloc_steal(mem_ctx, r->out.join_password); - */ sct = talloc_asprintf(mem_ctx, "%d", r->in.secure_channel_type); msg = ldb_msg_new(mem_ctx); @@ -816,7 +828,9 @@ r->out.join_password = talloc_steal(mem_ctx, r2->out.join_password); r->out.domain_sid = talloc_steal(mem_ctx, r2->out.domain_sid); r->out.samr_pipe = talloc_steal(mem_ctx, r2->out.samr_pipe); + /*r->out.user_handle = talloc_steal(mem_ctx, r2->out.user_handle);*/ r->out.user_handle = talloc_steal(mem_ctx, r2->out.user_handle); + /*r->out.user_handle = ctx->user_handle;*/ return nt_status; } Modified: branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c =================================================================== --- branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c 2005-08-22 01:53:06 UTC (rev 9466) +++ branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c 2005-08-22 02:00:48 UTC (rev 9467) @@ -288,7 +288,7 @@ struct libnet_context *libnet_ctx; struct libnet_JoinDomain libnet_r; struct test_join *tj; - + NTSTATUS status; libnet_ctx = libnet_context_init(NULL); @@ -306,6 +306,8 @@ Call libnet_JoinDomain() rather than libnet_Join() -- it calls libnet_Join_primary_domain(), which puts the machine acct info in secrets.tdb. We don't want that for a torture_join. */ + printf("joining domain.\n"); + status = libnet_JoinDomain(libnet_ctx, mem_ctx, &libnet_r); if (!NT_STATUS_IS_OK(status)) { return NULL; @@ -313,7 +315,7 @@ tj = talloc(mem_ctx, struct test_join); - tj->p = libnet_r.out.samr_pipe; + tj->p = talloc_steal(mem_ctx, libnet_r.out.samr_pipe); tj->user_handle = *libnet_r.out.user_handle; tj->dom_sid = dom_sid_string(mem_ctx, libnet_r.out.domain_sid); *machine_password = libnet_r.out.join_password; @@ -322,8 +324,12 @@ Leave domain. This will ensure that the info for the torture machine acct is what we are expecting when we rejoin again. */ + printf("leaving domain.\n"); + torture_leave_domain(tj); + printf("joining domain.\n"); + status = libnet_JoinDomain(libnet_ctx, mem_ctx, &libnet_r); if (!NT_STATUS_IS_OK(status)) { return NULL; @@ -331,10 +337,10 @@ tj = talloc(mem_ctx, struct test_join); - tj->p = libnet_r.out.samr_pipe; + tj->p = talloc_steal(mem_ctx, libnet_r.out.samr_pipe); tj->user_handle = *libnet_r.out.user_handle; tj->dom_sid = dom_sid_string(mem_ctx, libnet_r.out.domain_sid); - *machine_password = libnet_r.out.join_password; + *machine_password = talloc_steal(mem_ctx, libnet_r.out.join_password); printf("torture_join_domain() complete.\n"); return tj; Modified: branches/SOC/SAMBA_4_0/source/utils/net/net_join.c =================================================================== --- branches/SOC/SAMBA_4_0/source/utils/net/net_join.c 2005-08-22 01:53:06 UTC (rev 9466) +++ branches/SOC/SAMBA_4_0/source/utils/net/net_join.c 2005-08-22 02:00:48 UTC (rev 9467) @@ -69,7 +69,8 @@ r.out.error_string = NULL; r.in.level = LIBNET_JOIN_AUTOMATIC; /* - Valgrind complains if we don't set netbios_name to null here. + Valgrind complains about an uninitialized value + if we don't set netbios_name to null here. */ r.in.netbios_name = NULL;
