[SCM] Samba Shared Repository - branch master updated - tevent-0-9-8-795-g6c0abbd

Günther Deschner gd at samba.org
Tue Sep 29 16:38:18 MDT 2009


The branch, master has been updated
       via  6c0abbdd350f9af5cfb59381efb80385e5d3a4f3 (commit)
      from  eb7a40422593970eba0541a7e4deaa6bc31f94e0 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 6c0abbdd350f9af5cfb59381efb80385e5d3a4f3
Author: Günther Deschner <gd at samba.org>
Date:   Thu Sep 24 18:53:40 2009 +0200

    s3-netlogon: properly implement _netr_NetrEnumerateTrustedDomains().
    
    Guenther

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

Summary of changes:
 source3/rpc_server/srv_netlog_nt.c |   39 ++++++++++++++++++++++++++++++-----
 1 files changed, 33 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/srv_netlog_nt.c b/source3/rpc_server/srv_netlog_nt.c
index 9169c74..2aee005 100644
--- a/source3/rpc_server/srv_netlog_nt.c
+++ b/source3/rpc_server/srv_netlog_nt.c
@@ -229,20 +229,47 @@ WERROR _netr_LogonControl2Ex(pipes_struct *p,
 WERROR _netr_NetrEnumerateTrustedDomains(pipes_struct *p,
 					 struct netr_NetrEnumerateTrustedDomains *r)
 {
-	struct netr_Blob trusted_domains_blob;
+	NTSTATUS status;
 	DATA_BLOB blob;
+	struct trustdom_info **domains;
+	uint32_t num_domains;
+	const char **trusted_domains;
+	int i;
 
 	DEBUG(6,("_netr_NetrEnumerateTrustedDomains: %d\n", __LINE__));
 
 	/* set up the Trusted Domain List response */
 
-	blob = data_blob_talloc_zero(p->mem_ctx, 2);
-	trusted_domains_blob.data = blob.data;
-	trusted_domains_blob.length = blob.length;
+	become_root();
+	status = pdb_enum_trusteddoms(p->mem_ctx, &num_domains, &domains);
+	unbecome_root();
+
+	if (!NT_STATUS_IS_OK(status)) {
+		return ntstatus_to_werror(status);
+	}
 
-	DEBUG(6,("_netr_NetrEnumerateTrustedDomains: %d\n", __LINE__));
+	trusted_domains = talloc_zero_array(p->mem_ctx, const char *, num_domains + 1);
+	if (!trusted_domains) {
+		return WERR_NOMEM;
+	}
+
+	for (i = 0; i < num_domains; i++) {
+		trusted_domains[i] = talloc_strdup(trusted_domains, domains[i]->name);
+		if (!trusted_domains[i]) {
+			TALLOC_FREE(trusted_domains);
+			return WERR_NOMEM;
+		}
+	}
 
-	*r->out.trusted_domains_blob = trusted_domains_blob;
+	if (!push_reg_multi_sz(trusted_domains, &blob, trusted_domains)) {
+		TALLOC_FREE(trusted_domains);
+		return WERR_NOMEM;
+	}
+
+	r->out.trusted_domains_blob->data = blob.data;
+	r->out.trusted_domains_blob->length = blob.length;
+
+	DEBUG(6,("_netr_NetrEnumerateTrustedDomains: %d\n", __LINE__));
 
 	return WERR_OK;
 }


-- 
Samba Shared Repository


More information about the samba-cvs mailing list