From e5b1a744a1c6760713ddfa0761de94850f07ca94 Mon Sep 17 00:00:00 2001 From: Ezra Peisach Date: Sat, 25 Dec 2004 15:29:39 +0000 Subject: [PATCH] Memory leaks in ccache due to thread integration * cc_file.c (krb5_fcc_close): Free the cache id. (dereference): When removing fcc_set entry from list, free the pointer as well. The first was accidently dropped in the dereference code writing. The cache id pointer is never freed. The second error is the removal of the krb5_fcc_data from the linked list. The fcc_set is removed from the chain, but the memory for the removed fcc_set is never freed. ticket:new tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16981 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/krb5/ccache/ChangeLog | 6 ++++++ src/lib/krb5/ccache/cc_file.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/src/lib/krb5/ccache/ChangeLog b/src/lib/krb5/ccache/ChangeLog index 05e041c8b..d19ccb725 100644 --- a/src/lib/krb5/ccache/ChangeLog +++ b/src/lib/krb5/ccache/ChangeLog @@ -1,3 +1,9 @@ +2004-12-25 Ezra Peisach + + * cc_file.c (krb5_fcc_close): Free the cache id. + (dereference): When removing fcc_set entry from list, free the + pointer as well. + 2004-12-16 Jeffrey Altman * cc_mslsa.c: Temporarily deactivate support for KerbSubmitTicketMessage diff --git a/src/lib/krb5/ccache/cc_file.c b/src/lib/krb5/ccache/cc_file.c index 14e59a146..1eadab688 100644 --- a/src/lib/krb5/ccache/cc_file.c +++ b/src/lib/krb5/ccache/cc_file.c @@ -1486,8 +1486,11 @@ static krb5_error_code dereference(krb5_context context, krb5_fcc_data *data) assert(*fccsp != NULL); (*fccsp)->refcount--; if ((*fccsp)->refcount == 0) { + struct fcc_set *temp; data = (*fccsp)->data; + temp = *fccsp; *fccsp = (*fccsp)->next; + free(temp); k5_mutex_unlock(&krb5int_cc_file_mutex); free(data->filename); zap(data->buf, sizeof(data->buf)); @@ -1517,6 +1520,7 @@ static krb5_error_code KRB5_CALLCONV krb5_fcc_close(krb5_context context, krb5_ccache id) { dereference(context, (krb5_fcc_data *) id->data); + krb5_xfree(id); return KRB5_OK; } -- 2.26.2