s4-dsdb/cracknames: free realm from smb_krb5_principal_get_realm().
authorGünther Deschner <gd@samba.org>
Thu, 15 May 2014 07:46:21 +0000 (09:46 +0200)
committerGünther Deschner <gd@samba.org>
Fri, 8 Aug 2014 14:37:36 +0000 (16:37 +0200)
Guenther

Signed-off-by: Günther Deschner <gd@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/dsdb/samdb/cracknames.c

index 5e97efcee3f58ba52a4efa22c3fbf4e28da23a31..7c189d365fee4d461baa86bb17916cdbec5a0838 100644 (file)
@@ -56,7 +56,7 @@ static WERROR dns_domain_from_principal(TALLOC_CTX *mem_ctx, struct smb_krb5_con
        krb5_error_code ret;
        krb5_principal principal;
        /* perhaps it's a principal with a realm, so return the right 'domain only' response */
-       const char *realm;
+       char *realm;
        ret = krb5_parse_name_flags(smb_krb5_context->krb5_context, name, 
                                    KRB5_PRINCIPAL_PARSE_REQUIRE_REALM, &principal);
        if (ret) {
@@ -64,11 +64,11 @@ static WERROR dns_domain_from_principal(TALLOC_CTX *mem_ctx, struct smb_krb5_con
                return WERR_OK;
        }
 
-       /* This isn't an allocation assignemnt, so it is free'ed with the krb5_free_principal */
        realm = smb_krb5_principal_get_realm(smb_krb5_context->krb5_context, principal);
 
        info1->dns_domain_name  = talloc_strdup(mem_ctx, realm);
        krb5_free_principal(smb_krb5_context->krb5_context, principal);
+       free(realm);
 
        W_ERROR_HAVE_NO_MEMORY(info1->dns_domain_name);
 
@@ -271,7 +271,7 @@ static WERROR DsCrackNameUPN(struct ldb_context *sam_ctx, TALLOC_CTX *mem_ctx,
        const char *result_filter = NULL;
        krb5_error_code ret;
        krb5_principal principal;
-       const char *realm;
+       char *realm;
        char *unparsed_name_short;
        const char *domain_attrs[] = { NULL };
        struct ldb_result *domain_res = NULL;
@@ -301,6 +301,7 @@ static WERROR DsCrackNameUPN(struct ldb_context *sam_ctx, TALLOC_CTX *mem_ctx,
                             ldb_binary_encode_string(mem_ctx, realm),
                             LDB_OID_COMPARATOR_AND,
                             SYSTEM_FLAG_CR_NTDS_DOMAIN);
+       free(realm);
 
        if (ldb_ret != LDB_SUCCESS) {
                DEBUG(2, ("DsCrackNameUPN domain ref search failed: %s\n", ldb_errstring(sam_ctx)));