summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2009-01-30 21:25:40 +0000
committerGreg Hudson <ghudson@mit.edu>2009-01-30 21:25:40 +0000
commit77b1e1108ca32617fe43825748c68c575e77f010 (patch)
treeb6adaa188f65940bd59d95c71e64eac81c7cb6bc /src/lib
parentd45b9dab3bd7327d63cc5b7580fc8738da7faee6 (diff)
downloadkrb5-77b1e1108ca32617fe43825748c68c575e77f010.tar.gz
krb5-77b1e1108ca32617fe43825748c68c575e77f010.tar.xz
krb5-77b1e1108ca32617fe43825748c68c575e77f010.zip
krb5_get_server_rcache had some dead (and incorrect) code for cleaning
up the rcache on failure. Fix the cleanup code and make use of it. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@21842 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/krb/srv_rcache.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/src/lib/krb5/krb/srv_rcache.c b/src/lib/krb5/krb/srv_rcache.c
index 9da6d45ff..7d6b68a7e 100644
--- a/src/lib/krb5/krb/srv_rcache.c
+++ b/src/lib/krb5/krb/srv_rcache.c
@@ -71,21 +71,13 @@ krb5_get_server_rcache(krb5_context context, const krb5_data *piece,
return ENOMEM;
retval = krb5_rc_resolve_full(context, &rcache, cachename);
- if (retval) {
- rcache = 0;
+ if (retval)
goto cleanup;
- }
- /*
- * First try to recover the replay cache; if that doesn't work,
- * initialize it.
- */
- retval = krb5_rc_recover_or_initialize(context, rcache, context->clockskew);
- if (retval) {
- krb5_rc_close(context, rcache);
- rcache = 0;
+ retval = krb5_rc_recover_or_initialize(context, rcache,
+ context->clockskew);
+ if (retval)
goto cleanup;
- }
*rcptr = rcache;
rcache = 0;
@@ -93,7 +85,7 @@ krb5_get_server_rcache(krb5_context context, const krb5_data *piece,
cleanup:
if (rcache)
- free(rcache);
+ krb5_rc_close(context, rcache);
if (cachename)
free(cachename);
return retval;