From 4a6a9d026bc8425bff6774f22cb8185f9c029dd3 Mon Sep 17 00:00:00 2001 From: Love Hornquist Astrand Date: Tue, 29 Jun 2010 08:12:55 -0700 Subject: [PATCH] =?UTF-8?q?Plug=20double=20frees,=20patch=20orignally=20fr?= =?UTF-8?q?om=20Matthias=20Dieter=20Walln=C3=B6fer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/krb5/get_cred.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/krb5/get_cred.c b/lib/krb5/get_cred.c index 75e44f0cd..4e5bb479a 100644 --- a/lib/krb5/get_cred.c +++ b/lib/krb5/get_cred.c @@ -939,9 +939,9 @@ get_cred_kdc_referral(krb5_context context, ret = EINVAL; if (ret) { - ret = get_cred_kdc_address (context, ccache, flags, NULL, - &referral, &tgt, impersonate_principal, - second_ticket, &ticket); + ret = get_cred_kdc_address(context, ccache, flags, NULL, + &referral, &tgt, impersonate_principal, + second_ticket, &ticket); if (ret) goto out; } @@ -956,8 +956,8 @@ get_cred_kdc_referral(krb5_context context, krb5_set_error_message(context, KRB5KRB_AP_ERR_NOT_US, N_("Got back an non krbtgt " "ticket referrals", "")); - krb5_free_cred_contents(context, &ticket); - return KRB5KRB_AP_ERR_NOT_US; + ret = KRB5KRB_AP_ERR_NOT_US; + goto out; } referral_realm = ticket.server->name.name_string.val[1]; @@ -979,8 +979,8 @@ get_cred_kdc_referral(krb5_context context, "loops back to realm %s", ""), tgt.server->realm, referral_realm); - krb5_free_cred_contents(context, &ticket); - return KRB5_GET_IN_TKT_LOOP; + ret = KRB5_GET_IN_TKT_LOOP; + goto out; } tickets++; } @@ -996,10 +996,8 @@ get_cred_kdc_referral(krb5_context context, } ret = add_cred(context, &ticket, ret_tgts); - if (ret) { - krb5_free_cred_contents(context, &ticket); + if (ret) goto out; - } /* try realm in the referral */ ret = krb5_principal_set_realm(context, @@ -1017,6 +1015,7 @@ get_cred_kdc_referral(krb5_context context, out: krb5_free_principal(context, referral.server); krb5_free_cred_contents(context, &tgt); + krb5_free_cred_contents(context, &ticket); return ret; }