From 17c9fd68e44e5099b1e9a8f6526940adc1d81133 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Mon, 3 May 1999 02:08:51 +0000 Subject: [PATCH] (get_cred_from_kdc_flags): allocate and free `*out_creds' properly git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6065 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/get_cred.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/krb5/get_cred.c b/lib/krb5/get_cred.c index dd5569423..7919e88d4 100644 --- a/lib/krb5/get_cred.c +++ b/lib/krb5/get_cred.c @@ -644,14 +644,15 @@ get_cred_from_kdc_flags(krb5_context context, *out_creds = calloc(1, sizeof(**out_creds)); if(*out_creds == NULL) ret = ENOMEM; - else + else { ret = get_cred_kdc_la(context, ccache, flags, in_creds, &tgts, *out_creds); + if (ret) + free (*out_creds); + } krb5_free_creds_contents(context, &tgts); krb5_free_principal(context, tmp_creds.server); krb5_free_principal(context, tmp_creds.client); - if(ret) - free(*out_creds); return ret; } } @@ -696,7 +697,15 @@ get_cred_from_kdc_flags(krb5_context context, krb5_free_principal(context, tmp_creds.server); krb5_free_principal(context, tmp_creds.client); - ret = get_cred_kdc_la(context, ccache, flags, in_creds, tgt, *out_creds); + *out_creds = calloc(1, sizeof(**out_creds)); + if(*out_creds == NULL) + ret = ENOMEM; + else { + ret = get_cred_kdc_la(context, ccache, flags, + in_creds, tgt, *out_creds); + if (ret) + free (*out_creds); + } krb5_free_creds(context, tgt); return ret; }