svn commit: samba r9654 - in branches/SAMBA_4_0/source: dsdb/samdb libnet rpc_server/lsa rpc_server/samr

idra at samba.org idra at samba.org
Fri Aug 26 16:12:26 GMT 2005


Author: idra
Date: 2005-08-26 16:12:25 +0000 (Fri, 26 Aug 2005)
New Revision: 9654

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

Log:

introduce the samdb_search_dn call


Modified:
   branches/SAMBA_4_0/source/dsdb/samdb/samdb.c
   branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c
   branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
   branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
   branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c


Changeset:
Modified: branches/SAMBA_4_0/source/dsdb/samdb/samdb.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/samdb.c	2005-08-26 16:06:17 UTC (rev 9653)
+++ branches/SAMBA_4_0/source/dsdb/samdb/samdb.c	2005-08-26 16:12:25 UTC (rev 9654)
@@ -127,6 +127,28 @@
 	return str;
 }
 
+struct ldb_dn *samdb_search_dn(struct ldb_context *sam_ldb,
+			       TALLOC_CTX *mem_ctx,
+			       const struct ldb_dn *basedn,
+			       const char *format, ...) _PRINTF_ATTRIBUTE(4,5)
+{
+	va_list ap;
+	struct ldb_dn *ret;
+	struct ldb_message **res = NULL;
+	int count;
+
+	va_start(ap, format);
+	count = gendb_search_v(sam_ldb, mem_ctx, basedn, &res, NULL, format, ap);
+	va_end(ap);
+
+	if (count != 1) return NULL;
+
+	ret = talloc_steal(mem_ctx, res[0]->dn);
+	talloc_free(res);
+
+	return ret;
+}
+
 /*
   search the sam for a dom_sid attribute in exactly 1 record
 */

Modified: branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c	2005-08-26 16:06:17 UTC (rev 9653)
+++ branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c	2005-08-26 16:12:25 UTC (rev 9654)
@@ -58,11 +58,9 @@
 {
 	const char *sidstr = dom_sid_string(mem_ctx, sid);
 	/* We assume that ForeignSecurityPrincipals are under the BASEDN of the main domain */
-	struct ldb_dn *basedn = ldb_dn_explode(mem_ctx,
-						samdb_search_string(state->sam_ldb, mem_ctx,
-									state->base_dn[SAM_DATABASE_DOMAIN],
-									"dn", "(&(objectClass=container)"
-										"(cn=ForeignSecurityPrincipals))"));
+	struct ldb_dn *basedn = samdb_search_dn(state->sam_ldb, mem_ctx,
+						state->base_dn[SAM_DATABASE_DOMAIN],
+						"(&(objectClass=container)(cn=ForeignSecurityPrincipals))");
 	struct ldb_message *msg;
 	int ret;
 

Modified: branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2005-08-26 16:06:17 UTC (rev 9653)
+++ branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2005-08-26 16:12:25 UTC (rev 9654)
@@ -261,18 +261,15 @@
 
 	/* work out the builtin_dn - useful for so many calls its worth
 	   fetching here */
-	state->builtin_dn = ldb_dn_explode(state, 
-					 samdb_search_string(state->sam_ldb, mem_ctx, NULL,
-							     "dn", "objectClass=builtinDomain"));
+	state->builtin_dn = samdb_search_dn(state->sam_ldb, mem_ctx, NULL, "objectClass=builtinDomain");
 	if (!state->builtin_dn) {
 		return NT_STATUS_NO_SUCH_DOMAIN;		
 	}
 
 	/* work out the system_dn - useful for so many calls its worth
 	   fetching here */
-	state->system_dn = ldb_dn_explode(state, 
-					samdb_search_string(state->sam_ldb, mem_ctx, state->domain_dn,
-							    "dn", "(&(objectClass=container)(cn=System))"));
+	state->system_dn = samdb_search_dn(state->sam_ldb, mem_ctx,
+					   state->domain_dn, "(&(objectClass=container)(cn=System))");
 	if (!state->system_dn) {
 		return NT_STATUS_NO_SUCH_DOMAIN;		
 	}
@@ -1304,13 +1301,9 @@
 	}
 	
 	/* check it really exists */
-	astate->account_dn = 
-		ldb_dn_explode(mem_ctx,
-				samdb_search_string(state->sam_ldb, astate,
-						    NULL, "dn", 
-						    "(&(objectSid=%s)(objectClass=group))", 
-						    ldap_encode_ndr_dom_sid(mem_ctx,
-									    astate->account_sid)));
+	astate->account_dn = samdb_search_string(state->sam_ldb, astate,
+						 NULL, "(&(objectSid=%s)(objectClass=group))", 
+						 ldap_encode_ndr_dom_sid(mem_ctx, astate->account_sid));
 	if (astate->account_dn == NULL) {
 		talloc_free(astate);
 		return NT_STATUS_NO_SUCH_USER;
@@ -1466,8 +1459,7 @@
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	dn = samdb_search_string(state->sam_ldb, mem_ctx, NULL, "dn", 
-				 "objectSid=%s", sidstr);
+	dn = samdb_search_dn(state->sam_ldb, mem_ctx, NULL, "objectSid=%s", sidstr);
 	if (dn == NULL) {
 		return NT_STATUS_NO_SUCH_USER;
 	}

Modified: branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c	2005-08-26 16:06:17 UTC (rev 9653)
+++ branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c	2005-08-26 16:12:25 UTC (rev 9654)
@@ -2117,11 +2117,8 @@
 		 * cn=For...,cn=Builtin,dc={BASEDN}.  -- vl
 		 */
 
-		basedn = ldb_dn_explode(mem_ctx,
-					samdb_search_string(d_state->sam_ctx,
-							    mem_ctx, NULL, "dn",
-							    "(&(objectClass=container)"
-							    "(cn=ForeignSecurityPrincipals))"));
+		basedn = samdb_search_dn(d_state->sam_ctx, mem_ctx, NULL,
+					 "(&(objectClass=container)(cn=ForeignSecurityPrincipals))");
 
 		if (basedn == NULL) {
 			DEBUG(0, ("Failed to find DN for "

Modified: branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c	2005-08-26 16:06:17 UTC (rev 9653)
+++ branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c	2005-08-26 16:12:25 UTC (rev 9654)
@@ -210,10 +210,9 @@
 		return NT_STATUS_NO_SUCH_USER;
 	}
 
-	domain_dn = ldb_dn_explode(mem_ctx,
-				   samdb_search_string(sam_ctx, mem_ctx, NULL, "dn",
-							"(objectSid=%s)", 
-							ldap_encode_ndr_dom_sid(mem_ctx, domain_sid)));
+	domain_dn = samdb_search_dn(sam_ctx, mem_ctx, NULL,
+				    "(objectSid=%s)", 
+				    ldap_encode_ndr_dom_sid(mem_ctx, domain_sid));
 	if (!domain_dn) {
 		return NT_STATUS_INTERNAL_DB_CORRUPTION;
 	}
@@ -361,10 +360,9 @@
 		goto failed;
 	}
 
-	domain_dn = ldb_dn_explode(mem_ctx,
-				   samdb_search_string(sam_ctx, mem_ctx, NULL, "dn",
-							"(objectSid=%s)", 
-							ldap_encode_ndr_dom_sid(mem_ctx, domain_sid)));
+	domain_dn = samdb_search_dn(sam_ctx, mem_ctx, NULL,
+				    "(objectSid=%s)", 
+				    ldap_encode_ndr_dom_sid(mem_ctx, domain_sid));
 	if (!domain_dn) {
 		status = NT_STATUS_INTERNAL_DB_CORRUPTION;
 		goto failed;



More information about the samba-cvs mailing list