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 <[EMAIL PROTECTED]> 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); }