From: Tom Yu Date: Thu, 20 Oct 2011 19:27:43 +0000 (+0000) Subject: pull up r25384 from trunk X-Git-Tag: krb5-1.10-alpha1~6 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=eaeb314ab93fca60f7615265204ec71c68696a7b;p=krb5.git pull up r25384 from trunk ------------------------------------------------------------------------ r25384 | ghudson | 2011-10-19 23:45:12 -0400 (Wed, 19 Oct 2011) | 12 lines ticket: 6987 subject: Fix krb5_cc_set_config target_version: 1.10 tags: pullup krb5_cc_set_config has been non-functional since r24753 on cache types which don't support removal of credential entries. Fix it by only calling krb5_cc_remove_cred if data is NULL, since krb5_cc_store_cred will do it anyway in the positive case. Also fix an old memory leak in an uncommon error case. ticket: 6987 version_fixed: 1.10 status: resolved git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-10@25388 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/lib/krb5/ccache/ccfns.c b/src/lib/krb5/ccache/ccfns.c index 70c607dfb..b5a878fc6 100644 --- a/src/lib/krb5/ccache/ccfns.c +++ b/src/lib/krb5/ccache/ccfns.c @@ -281,16 +281,14 @@ krb5_cc_set_config(krb5_context context, krb5_ccache id, if (ret) goto out; - /* Remove old configuration */ - ret = krb5_cc_remove_cred(context, id, 0, &cred); - if (ret && ret != KRB5_CC_NOTFOUND) - goto out; - - if (data) { + if (data == NULL) { + ret = krb5_cc_remove_cred(context, id, 0, &cred); + } else { cred.ticket.data = malloc(data->length); if (cred.ticket.data == NULL) { - krb5_set_error_message(context, ENOMEM, "malloc: out of memory"); - return ENOMEM; + ret = ENOMEM; + krb5_set_error_message(context, ret, "malloc: out of memory"); + goto out; } cred.ticket.length = data->length; memcpy(cred.ticket.data, data->data, data->length);