svn commit: samba r9407 - in branches/SOC/SAMBA_4_0: . source/libnet source/torture/rpc

brad at samba.org brad at samba.org
Sat Aug 20 01:22:43 GMT 2005


Author: brad
Date: 2005-08-20 01:22:42 +0000 (Sat, 20 Aug 2005)
New Revision: 9407

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9407

Log:
 r5502 at buttercup:  j0j0 | 2005-08-19 19:28:22 -0600
 libnet/libnet_join.c
 Some more fixes so ldb uses ldb_dn's.
 
 torture/rpc/dssync.c
 Some debugging printf()'s.
 ldb_dn fixes.
 
 torture/rpc/testjoin.c
 Change torture_join_domain() to use libnet_JoinDomain() rather than libnet_Join().
 Some more debugging statements.
 
 I'm not sure why, but GUID_all_zero(user_handle.uuid) is returning true in torture_leave_domain() when called it from torture_destroy_context() in torture/rpc/dssync.c.
 That's what i'm working out now.
 

Modified:
   branches/SOC/SAMBA_4_0/
   branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c
   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:9397
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5500
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:5502
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-20 00:10:03 UTC (rev 9406)
+++ branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c	2005-08-20 01:22:42 UTC (rev 9407)
@@ -81,7 +81,6 @@
 	struct dom_sid *domain_sid;
 	const char *domain_name;
 	const char *realm = NULL; /* Also flag for remote being AD */
-	const struct ldb_dn *account_dn;
 
 	
 	tmp_ctx = talloc_named(mem_ctx, 0, "libnet_Join temp context");
@@ -457,7 +456,7 @@
 
 	struct ldb_context *remote_ldb;
 
-	const char *account_dn;
+	const struct ldb_dn *account_dn;
 
 	char *remote_ldb_url;
 	struct ldb_message **msgs, *msg;

Modified: branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c
===================================================================
--- branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c	2005-08-20 00:10:03 UTC (rev 9406)
+++ branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c	2005-08-20 01:22:42 UTC (rev 9407)
@@ -115,6 +115,19 @@
 	/*create machine account*/
 	ctx->new_dc.join = torture_join_domain(mem_ctx, TEST_MACHINE_NAME, lp_workgroup(), ACB_SVRTRUST, &new_dc_pass);  
 
+	/* debugging printf()'s*/
+	if (torture_join_samr_pipe(ctx->new_dc.join) != NULL) {
+		 printf("test_create_context(): tj->p isn't null\n");
+	} else {
+		printf("test_create_context(): tj->p is null.\n");
+	}
+	
+	if (torture_join_samr_user_policy(ctx->new_dc.join) != NULL) {
+		printf("test_create_context(): tj->user_handle isn't null\n");	
+	} else {
+		printf("test_create_context(): tj->user_handle is null.\n");
+	}
+
 	/*
 	ctx->libnet_ctx = libnet_context_init(NULL);
 	if (ctx->libnet_ctx == NULL) {
@@ -172,6 +185,7 @@
 				ldb_errstring(ctx->ldb_ctx));
 			return;
 		}
+		
 		/* 
 		ldif = talloc_asprintf(ctx,
 			"dn: %s\n"
@@ -219,10 +233,12 @@
 	This will need to be replaced with a libnet leave domain call.
 	It will remove the computer dn: CN=smbtorturedssync,OU=Domain Controllers,DC=smb,DC=test
 	entry, and maybe the server dn also.
+	*/
+	printf("test_destroy_context(): Removing machine account %s$.\n",TEST_MACHINE_NAME);
 	if (ctx->new_dc.join) {
 		torture_leave_domain(ctx->new_dc.join);
 	}
-	*/
+	
 	talloc_free(ctx);
 	
 }

Modified: branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c
===================================================================
--- branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c	2005-08-20 00:10:03 UTC (rev 9406)
+++ branches/SOC/SAMBA_4_0/source/torture/rpc/testjoin.c	2005-08-20 01:22:42 UTC (rev 9407)
@@ -286,7 +286,7 @@
 	*/
 	
 	struct libnet_context *libnet_ctx;
-	struct libnet_Join libnet_r;
+	struct libnet_JoinDomain libnet_r;
 	struct test_join *tj;
 	NTSTATUS status;
 	
@@ -298,22 +298,45 @@
 	libnet_r.in.domain_name = domain;
 	libnet_r.in.level = LIBNET_JOIN_SPECIFIED; 
 	libnet_r.in.netbios_name = machine_name;
-	
-	if (acct_flags == ACB_SVRTRUST) {
-		libnet_r.in.secure_channel_type = SEC_CHAN_BDC;
-	} else if (acct_flags == ACB_WSTRUST) {
-		libnet_r.in.secure_channel_type = SEC_CHAN_WKSTA;
-	}
-		
-	status = libnet_Join(libnet_ctx, mem_ctx, &libnet_r);
+	libnet_r.in.account_name = talloc_asprintf(mem_ctx, "%s$", libnet_r.in.netbios_name);
+	libnet_r.in.acct_type = acct_flags;
+
+	/*
+	 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.
+	 */	
+	status = libnet_JoinDomain(libnet_ctx, mem_ctx, &libnet_r);
+
 	if (!NT_STATUS_IS_OK(status)) {
 		return NULL;
 	}
 	tj = talloc(mem_ctx, struct test_join);
+	
+	/* this bit makes torture_leave_domain() segfault...
+	   libnet_ctx seems to be a better place to fetch most of this from anyway.
+	   
 	tj->p = 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;
+	*/
+	if (libnet_ctx->pipe != NULL) {
+		 printf("torture_join_domain(): libnet_ctx->pipe isn't null\n");
+	} else {
+		printf("torture_join_domain(): libnet_ctx->pipe is null.\n");
+	}
+	
+	if (&libnet_ctx->user_handle != NULL) {
+		printf("torture_join_domain(): libnet_ctx->user_handle isn't null\n");	
+	} else {
+		printf("torture_join_domain(): libnet_ctx->user_handle is null.\n");
+	}
+	
+	tj->p = libnet_ctx->pipe;
+	tj->user_handle = libnet_ctx->user_handle;
+	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");
 	return tj;
 }
@@ -343,7 +366,11 @@
 		status = dcerpc_samr_DeleteUser(join->p, join, &d);
 		if (!NT_STATUS_IS_OK(status)) {
 			printf("Delete of machine account failed\n");
+		} else {
+			printf("Delete of machine account was successful.\n");
 		}
+	} else {
+		 printf("torture_leave_domain(): GUID_all_zero(&join->user_handle.uuid) returned true, dcerpc_samr_DeleteUser() not called.\n");
 	}
 
 	talloc_free(join);



More information about the samba-cvs mailing list