svn commit: samba r11194 - in branches/SAMBA_4_0/source/rpc_server/drsuapi: .

abartlet at samba.org abartlet at samba.org
Thu Oct 20 01:48:12 GMT 2005


Author: abartlet
Date: 2005-10-20 01:48:11 +0000 (Thu, 20 Oct 2005)
New Revision: 11194

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

Log:
Use the special ldb attribute "canonicalName" (therefore testing that
codepath) in DRSUAPI CrackNames.

Fix the NT4 account return value.

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/rpc_server/drsuapi/drsuapi_cracknames.c


Changeset:
Modified: branches/SAMBA_4_0/source/rpc_server/drsuapi/drsuapi_cracknames.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/drsuapi/drsuapi_cracknames.c	2005-10-19 21:53:03 UTC (rev 11193)
+++ branches/SAMBA_4_0/source/rpc_server/drsuapi/drsuapi_cracknames.c	2005-10-20 01:48:11 UTC (rev 11194)
@@ -501,7 +501,6 @@
 	/* here we need to set the attrs lists for domain and result lookups */
 	switch (format_desired) {
 	case DRSUAPI_DS_NAME_FORMAT_FQDN_1779:
-	case DRSUAPI_DS_NAME_FORMAT_CANONICAL:
 	case DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX: {
 		const char * const _domain_attrs[] = { "ncName", "dnsRoot", NULL};
 		const char * const _result_attrs[] = { NULL};
@@ -510,6 +509,14 @@
 		result_attrs = _result_attrs;
 		break;
 	}
+	case DRSUAPI_DS_NAME_FORMAT_CANONICAL: {
+		const char * const _domain_attrs[] = { "ncName", "dnsRoot", NULL};
+		const char * const _result_attrs[] = { "canonicalName", NULL };
+		
+		domain_attrs = _domain_attrs;
+		result_attrs = _result_attrs;
+		break;
+	}
 	case DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT: {
 		const char * const _domain_attrs[] = { "ncName", "dnsRoot", "nETBIOSName", NULL};
 		const char * const _result_attrs[] = { "sAMAccountName", "objectSid", NULL};
@@ -614,16 +621,18 @@
 		info1->status		= DRSUAPI_DS_NAME_STATUS_OK;
 		return WERR_OK;
 	}
-	case DRSUAPI_DS_NAME_FORMAT_CANONICAL:
+	case DRSUAPI_DS_NAME_FORMAT_CANONICAL: {
+		info1->result_name	= samdb_result_string(result_res[0], "canonicalName", NULL);
+		info1->status		= DRSUAPI_DS_NAME_STATUS_OK;
+		return WERR_OK;
+	}
+	case DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX: {
+		/* Not in the virtual ldb attribute */
 		return DsCrackNameOneSyntactical(mem_ctx, 
 						 DRSUAPI_DS_NAME_FORMAT_FQDN_1779, 
-						 DRSUAPI_DS_NAME_FORMAT_CANONICAL,
-						 result_res[0]->dn, name, info1);
-	case DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX:
-		return DsCrackNameOneSyntactical(mem_ctx, 
-						 DRSUAPI_DS_NAME_FORMAT_FQDN_1779, 
 						 DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX,
 						 result_res[0]->dn, name, info1);
+	}
 	case DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT: {
 		const struct dom_sid *sid = samdb_result_dom_sid(mem_ctx, result_res[0], "objectSid");
 		const char *_acc = "", *_dom = "";
@@ -651,14 +660,14 @@
 				return WERR_OK;
 			}
 			dom_sid->num_auths--;
-			ldb_ret = gendb_search(b_state->sam_ctx, mem_ctx, NULL, &domain_res2, attrs,
+			ldb_ret = gendb_search(b_state->sam_ctx, mem_ctx, NULL, &domain_res, attrs,
 					       "(objectSid=%s)", ldap_encode_ndr_dom_sid(mem_ctx, dom_sid));
 			if (ldb_ret != 1) {
 				info1->status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND;
 				return WERR_OK;
 			}
-			ldb_ret = gendb_search(b_state->sam_ctx, mem_ctx, NULL, &domain_res, domain_attrs,
-					       "(ncName=%s)", ldb_dn_linearize(mem_ctx, domain_res2[0]->dn));
+			ldb_ret = gendb_search(b_state->sam_ctx, mem_ctx, NULL, &domain_res2, domain_attrs,
+					       "(ncName=%s)", ldb_dn_linearize(mem_ctx, domain_res[0]->dn));
 			if (ldb_ret != 1) {
 				info1->status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND;
 				return WERR_OK;
@@ -711,7 +720,7 @@
   drsuapi_DsCrackNames 
 */
 WERROR dcesrv_drsuapi_DsCrackNames(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-		       struct drsuapi_DsCrackNames *r)
+				   struct drsuapi_DsCrackNames *r)
 {
 	WERROR status;
 	struct drsuapi_bind_state *b_state;



More information about the samba-cvs mailing list