svn commit: samba r11356 - in branches/SAMBA_4_0/source/dsdb/samdb: .

abartlet at samba.org abartlet at samba.org
Fri Oct 28 05:14:51 GMT 2005


Author: abartlet
Date: 2005-10-28 05:14:51 +0000 (Fri, 28 Oct 2005)
New Revision: 11356

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

Log:
More cracknames work. This copes with a lookup for a
servicePrincipalName with a realm, which always returns 'domain only',
with the realm as the domain.

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/dsdb/samdb/cracknames.c


Changeset:
Modified: branches/SAMBA_4_0/source/dsdb/samdb/cracknames.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/cracknames.c	2005-10-28 04:58:33 UTC (rev 11355)
+++ branches/SAMBA_4_0/source/dsdb/samdb/cracknames.c	2005-10-28 05:14:51 UTC (rev 11356)
@@ -408,7 +408,27 @@
 		krb5_principal principal;
 		char *unparsed_name_short;
 		ret = krb5_parse_name_norealm(smb_krb5_context->krb5_context, name, &principal);
-		if (ret || (principal->name.name_string.len < 2)) {
+		if (ret) {
+			/* perhaps it's a principal with a realm, so return the right 'domain only' response */
+			char **realm;
+			ret = krb5_parse_name_mustrealm(smb_krb5_context->krb5_context, name, &principal);
+			if (ret) {
+				info1->status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND;
+				return WERR_OK;
+			}
+				
+			/* This isn't an allocation assignemnt, so it is free'ed with the krb5_free_principal */
+			realm = krb5_princ_realm(smb_krb5_context->krb5_context, principal);
+
+			info1->dns_domain_name	= talloc_strdup(info1, *realm);
+			krb5_free_principal(smb_krb5_context->krb5_context, principal);
+	
+			WERR_TALLOC_CHECK(info1->dns_domain_name);
+
+			info1->status = DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY;
+			return WERR_OK;
+			
+		} else if (principal->name.name_string.len < 2) {
 			info1->status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND;
 			return WERR_OK;
 		}



More information about the samba-cvs mailing list