Plug double frees, patch orignally from Matthias Dieter Wallnöfer

This commit is contained in:
Love Hornquist Astrand
2010-06-29 08:12:55 -07:00
parent 7639f83561
commit 4a6a9d026b

View File

@@ -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;
}