diff options
author | Justin Anderson <jander@mit.edu> | 2008-03-04 20:27:19 +0000 |
---|---|---|
committer | Justin Anderson <jander@mit.edu> | 2008-03-04 20:27:19 +0000 |
commit | f4e57e4334f2676c5db9ee34cc7b158327ddedf7 (patch) | |
tree | bc1c978e849ec4dbe6b6bb57693c6ebed16d4073 | |
parent | 110c2045b5fcac8559a6ecabba3850f8ba091601 (diff) | |
download | krb5-f4e57e4334f2676c5db9ee34cc7b158327ddedf7.zip krb5-f4e57e4334f2676c5db9ee34cc7b158327ddedf7.tar.gz krb5-f4e57e4334f2676c5db9ee34cc7b158327ddedf7.tar.bz2 |
Fix memory leak by delaying instantiation of lid until it's needed
ticket: 5897
tags: pullup
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20254 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r-- | src/lib/krb5/ccache/cc_memory.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/lib/krb5/ccache/cc_memory.c b/src/lib/krb5/ccache/cc_memory.c index 46fb651..173d003 100644 --- a/src/lib/krb5/ccache/cc_memory.c +++ b/src/lib/krb5/ccache/cc_memory.c @@ -248,12 +248,6 @@ krb5_mcc_resolve (krb5_context context, krb5_ccache *id, const char *residual) krb5_error_code err; krb5_mcc_data *d; - lid = (krb5_ccache) malloc(sizeof(struct _krb5_ccache)); - if (lid == NULL) - return KRB5_CC_NOMEM; - - lid->ops = &krb5_mcc_ops; - err = k5_mutex_lock(&krb5int_mcc_mutex); if (err) return err; @@ -266,11 +260,16 @@ krb5_mcc_resolve (krb5_context context, krb5_ccache *id, const char *residual) err = new_mcc_data(residual, &d); if (err) { k5_mutex_unlock(&krb5int_mcc_mutex); - krb5_xfree(lid); return err; } } k5_mutex_unlock(&krb5int_mcc_mutex); + + lid = (krb5_ccache) malloc(sizeof(struct _krb5_ccache)); + if (lid == NULL) + return KRB5_CC_NOMEM; + + lid->ops = &krb5_mcc_ops; lid->data = d; *id = lid; return KRB5_OK; |