svn commit: samba r9452 - in branches/SOC/SAMBA_4_0: . source/libnet source/utils/net

brad at samba.org brad at samba.org
Sun Aug 21 17:33:51 GMT 2005


Author: brad
Date: 2005-08-21 17:33:51 +0000 (Sun, 21 Aug 2005)
New Revision: 9452

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

Log:
 r5508 at buttercup:  j0j0 | 2005-08-21 11:40:36 -0600
 Bugfixes, trying to get things straight between contexts.
 

Modified:
   branches/SOC/SAMBA_4_0/
   branches/SOC/SAMBA_4_0/source/libnet/libnet_join.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:5506
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:5508
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-21 17:20:34 UTC (rev 9451)
+++ branches/SOC/SAMBA_4_0/source/libnet/libnet_join.c	2005-08-21 17:33:51 UTC (rev 9452)
@@ -82,7 +82,6 @@
 	const char *domain_name;
 	const char *realm = NULL; /* Also flag for remote being AD */
 
-	
 	tmp_ctx = talloc_named(mem_ctx, 0, "libnet_Join temp context");
 	if (!tmp_ctx) {
 		r->out.error_string = NULL;
@@ -172,12 +171,12 @@
 		talloc_free(tmp_ctx);
 		return status;
 	}
-	domain_sid = lsa_query_info.out.info->domain.sid;
-	domain_name = lsa_query_info.out.info->domain.name.string;
+	domain_sid = talloc_steal(mem_ctx,lsa_query_info.out.info->domain.sid);
+	domain_name = talloc_asprintf(mem_ctx,"%s",lsa_query_info.out.info->domain.name.string);
 	
 	r->out.domain_sid = talloc_steal(mem_ctx, domain_sid);
-	r->out.domain_name = talloc_steal(mem_ctx, domain_name);
-	r->out.realm = talloc_steal(mem_ctx, realm);
+	r->out.domain_name = talloc_asprintf(mem_ctx, "%s", domain_name);
+	r->out.realm = talloc_asprintf(mem_ctx, "%s", realm);
 
 	/*
 	  establish a SAMR connection, on the same CIFS transport
@@ -432,7 +431,7 @@
 	r->out.realm = NULL;
 	r->out.kvno = 0;
 
-
+	r->out.error_string = NULL;
 	talloc_free(tmp_ctx); 
 
 	return NT_STATUS_OK;
@@ -444,9 +443,9 @@
 
 	NTSTATUS status;
 	
-	const char *realm = r->out.realm;
+	const char *realm = talloc_asprintf(mem_ctx, "%s", r->out.realm);
 	
-	struct dcerpc_binding *samr_binding = r->out.samr_binding;
+	struct dcerpc_binding *samr_binding = talloc_steal(mem_ctx, r->out.samr_binding);
 	
 	struct dcerpc_pipe *drsuapi_pipe;
 	struct dcerpc_binding *drsuapi_binding;
@@ -646,10 +645,11 @@
 		}
 	}
 	
-/*	testing
+/*	testing*/
+	r->out.error_string = NULL;
 	talloc_free(tmp_ctx); 
-*/
 
+
 	return NT_STATUS_OK;
 }
 
@@ -702,23 +702,22 @@
 	r2.in.level = r->in.level;
 	status = libnet_JoinDomain(ctx, mem_ctx, &r2);
 
-	r->out.error_string = r2.out.error_string;
+	r->out.error_string = talloc_steal(mem_ctx, r2.out.error_string);
 	if (!NT_STATUS_IS_OK(status)) {
 		return status;
 	}
 	
+	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.domain_sid = talloc_steal(mem_ctx, r2.out.domain_sid);
+	r->out.join_password = talloc_steal(mem_ctx, r2.out.join_password);
 	
 	/*
-	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;
-	*/
 	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);
 
@@ -794,16 +793,18 @@
 {
 
 	NTSTATUS nt_status;
-	struct libnet_Join r2;
+	struct libnet_Join *r2;
 	
-	r2.in.level = r->in.level;
-	r2.in.secure_channel_type = r->in.secure_channel_type;
-	r2.in.domain_name = r->in.domain_name;
-	r2.in.netbios_name = r->in.netbios_name;
+	r2 = talloc(mem_ctx, struct libnet_Join);
 	
+	r2->in.level = r->in.level;
+	r2->in.secure_channel_type = r->in.secure_channel_type;
+	r2->in.domain_name = r->in.domain_name;
+	r2->in.netbios_name = r->in.netbios_name;
+	
 	if ((r->in.secure_channel_type == SEC_CHAN_WKSTA)
 	    || (r->in.secure_channel_type == SEC_CHAN_BDC)) {
-		nt_status = libnet_Join_primary_domain(ctx, mem_ctx, &r2);
+		nt_status = libnet_Join_primary_domain(ctx, mem_ctx, r2);
 	} else {
 		r->out.error_string
 			= talloc_asprintf(mem_ctx, "Invalid secure channel type specified (%08X) attempting to join domain %s",
@@ -811,11 +812,11 @@
 		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;
+	r->out.error_string = talloc_asprintf(mem_ctx, "%s", r2->out.error_string);
+	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);
 	
 	return nt_status;
 }

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-21 17:20:34 UTC (rev 9451)
+++ branches/SOC/SAMBA_4_0/source/utils/net/net_join.c	2005-08-21 17:33:51 UTC (rev 9452)
@@ -67,7 +67,12 @@
 	r.in.domain_name	 = domain_name;
 	r.in.secure_channel_type = secure_channel_type;
 	r.out.error_string       = NULL;
-
+	r.in.level		 = LIBNET_JOIN_AUTOMATIC;
+	/*
+	 Valgrind complains if we don't set netbios_name to null here.
+	*/
+	r.in.netbios_name	 = NULL;
+	
 	/* do the domain join */
 	status = libnet_Join(libnetctx, ctx->mem_ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {



More information about the samba-cvs mailing list