svn commit: samba r4713 - in branches/SAMBA_4_0/source/rpc_server/lsa: .

abartlet at samba.org abartlet at samba.org
Wed Jan 12 11:54:11 GMT 2005


Author: abartlet
Date: 2005-01-12 11:54:11 +0000 (Wed, 12 Jan 2005)
New Revision: 4713

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

Log:
Add initial support for QueryTrustedDomainInfo on LSA.
(more info levels to come)

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c


Changeset:
Modified: branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2005-01-12 11:46:43 UTC (rev 4712)
+++ branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2005-01-12 11:54:11 UTC (rev 4713)
@@ -829,9 +829,54 @@
   lsa_QueryTrustedDomainInfo
 */
 static NTSTATUS lsa_QueryTrustedDomainInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-		       struct lsa_QueryTrustedDomainInfo *r)
+					   struct lsa_QueryTrustedDomainInfo *r)
 {
-	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
+	struct dcesrv_handle *h;
+	struct lsa_trusted_domain_state *trusted_domain_state;
+	struct ldb_message *msg;
+	int ret;
+	struct ldb_message **res;
+	const char *attrs[] = {
+		"cn",
+		"flatname",
+		"posixOffset",
+		"securityIdentifier",
+		NULL
+	};
+
+	DCESRV_PULL_HANDLE(h, r->in.trustdom_handle, LSA_HANDLE_TRUSTED_DOMAIN);
+
+	trusted_domain_state = h->data;
+
+	/* pull all the user attributes */
+	ret = samdb_search(trusted_domain_state->policy->sam_ctx, mem_ctx, NULL, &res, attrs,
+			   "dn=%s", trusted_domain_state->trusted_domain_dn);
+	if (ret != 1) {
+		return NT_STATUS_INTERNAL_DB_CORRUPTION;
+	}
+	msg = res[0];
+	
+	r->out.info = talloc(mem_ctx, union lsa_TrustedDomainInfo);
+	if (!r->out.info) {
+		return NT_STATUS_NO_MEMORY;
+	}
+	switch (r->in.level) {
+	case LSA_TRUSTED_DOMAIN_INFO_NAME:
+		r->out.info->name.netbios_name.string
+			= samdb_result_string(msg, "flatname", NULL);					   
+		break;
+	case LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET:
+		r->out.info->posix_offset.posix_offset
+			= samdb_result_uint(msg, "posixOffset", 0);					   
+		break;
+	default:
+		/* oops, we don't want to return the info after all */
+		talloc_free(r->out.info);
+		r->out.info = NULL;
+		return NT_STATUS_INVALID_INFO_CLASS;
+	}
+
+	return NT_STATUS_OK;
 }
 
 
@@ -2070,10 +2115,6 @@
 
 	NTSTATUS nt_status;
 
-	time_t now = time(NULL);
-	NTTIME now_nt;
-	unix_to_nt_time(&now_nt, now);
-
 	DCESRV_PULL_HANDLE(h, r->in.sec_handle, LSA_HANDLE_SECRET);
 
 	secret_state = h->data;



More information about the samba-cvs mailing list