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

abartlet at samba.org abartlet at samba.org
Mon Aug 27 02:31:52 GMT 2007


Author: abartlet
Date: 2007-08-27 02:31:51 +0000 (Mon, 27 Aug 2007)
New Revision: 24697

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

Log:
Excelent patch and detective work by Matthias Walln?\195?\182fer
<mwallnoefer at yahoo.de> noticing that:

> The error was caused by info1 that is'nt talloced but rather static.

In fact, no caller supplies info1 as a valid talloc context - other
callers supply an element into the array.

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	2007-08-27 02:26:24 UTC (rev 24696)
+++ branches/SAMBA_4_0/source/dsdb/samdb/cracknames.c	2007-08-27 02:31:51 UTC (rev 24697)
@@ -45,7 +45,7 @@
 					struct ldb_dn *name_dn, const char *name, 
 					struct drsuapi_DsNameInfo1 *info1);
 
-static WERROR dns_domain_from_principal(struct smb_krb5_context *smb_krb5_context, 
+static WERROR dns_domain_from_principal(TALLOC_CTX *mem_ctx, struct smb_krb5_context *smb_krb5_context, 
 					const char *name, 
 					struct drsuapi_DsNameInfo1 *info1) 
 {
@@ -63,7 +63,7 @@
 	/* 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);
+	info1->dns_domain_name	= talloc_strdup(mem_ctx, *realm);
 	krb5_free_principal(smb_krb5_context->krb5_context, principal);
 	
 	W_ERROR_HAVE_NO_MEMORY(info1->dns_domain_name);
@@ -298,7 +298,7 @@
 	case 1:
 		break;
 	case 0:
-		return dns_domain_from_principal(smb_krb5_context, 
+		return dns_domain_from_principal(mem_ctx, smb_krb5_context, 
 						 name, info1);
 	case -1:
 		DEBUG(2, ("DsCrackNameUPN domain ref search failed: %s", ldb_errstring(sam_ctx)));
@@ -560,7 +560,7 @@
 		if (ret) {
 			krb5_free_principal(smb_krb5_context->krb5_context, principal);
 
-			return dns_domain_from_principal(smb_krb5_context,
+			return dns_domain_from_principal(mem_ctx, smb_krb5_context,
 							 name, info1);
 		}
 



More information about the samba-cvs mailing list