summaryrefslogtreecommitdiffstats
path: root/src/lib/krb5/ccache/ccfns.c
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2011-10-20 03:45:12 +0000
committerGreg Hudson <ghudson@mit.edu>2011-10-20 03:45:12 +0000
commitc0a51fe0c8051e27c6cee4f4f0c705356a715e1e (patch)
treec80e236498a21dcfe69e1ebc376d4e61019ca9b0 /src/lib/krb5/ccache/ccfns.c
parent693aa765f22bb1cffd8eabef6707d5d87ea42f47 (diff)
downloadkrb5-c0a51fe0c8051e27c6cee4f4f0c705356a715e1e.tar.gz
krb5-c0a51fe0c8051e27c6cee4f4f0c705356a715e1e.tar.xz
krb5-c0a51fe0c8051e27c6cee4f4f0c705356a715e1e.zip
Fix krb5_cc_set_config
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 target_version: 1.10 tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25384 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5/ccache/ccfns.c')
-rw-r--r--src/lib/krb5/ccache/ccfns.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/lib/krb5/ccache/ccfns.c b/src/lib/krb5/ccache/ccfns.c
index 70c607dfb4..b5a878fc6e 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);