summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2013-12-16 15:37:56 -0500
committerGreg Hudson <ghudson@mit.edu>2013-12-16 15:40:51 -0500
commitdecccbcb5075f8fbc28a535a9b337afc84a15dee (patch)
tree985fd4f8b4c233cd8c1abecddc2816ba775ea66f
parent1cda48a7ed4069cfc052f974ec3d76a9137c8c5a (diff)
downloadkrb5-decccbcb5075f8fbc28a535a9b337afc84a15dee.tar.gz
krb5-decccbcb5075f8fbc28a535a9b337afc84a15dee.tar.xz
krb5-decccbcb5075f8fbc28a535a9b337afc84a15dee.zip
Fix GSS krb5 acceptor acquire_cred error handling
When acquiring acceptor creds with a specified name, if we fail to open a replay cache, we leak the keytab handle. If there is no specified name and we discover that there is no content in the keytab, we leak the keytab handle and return the wrong major code. Memory leak reported by Andrea Campi. ticket: 7805 target_version: 1.12.1 tags: pullup
-rw-r--r--src/lib/gssapi/krb5/acquire_cred.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib/gssapi/krb5/acquire_cred.c b/src/lib/gssapi/krb5/acquire_cred.c
index 0efcad4fe9..9547207b11 100644
--- a/src/lib/gssapi/krb5/acquire_cred.c
+++ b/src/lib/gssapi/krb5/acquire_cred.c
@@ -225,6 +225,7 @@ acquire_accept_cred(krb5_context context,
code = krb5_get_server_rcache(context, &cred->name->princ->data[0],
&cred->rcache);
if (code) {
+ krb5_kt_close(context, kt);
*minor_status = code;
return GSS_S_FAILURE;
}
@@ -232,8 +233,9 @@ acquire_accept_cred(krb5_context context,
/* Make sure we have a keytab with keys in it. */
code = krb5_kt_have_content(context, kt);
if (code) {
+ krb5_kt_close(context, kt);
*minor_status = code;
- return GSS_S_FAILURE;
+ return GSS_S_CRED_UNAVAIL;
}
}