summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2011-07-23 13:15:09 +0000
committerGreg Hudson <ghudson@mit.edu>2011-07-23 13:15:09 +0000
commitb11e3ceee62898638d18abd764b0b2193e593876 (patch)
tree3be38d1b226dd23b7eb7a828c30a2cb774cd246c /src/lib/gssapi
parenta5bb037dd0c18535119afcd12f0aa23fea6059be (diff)
downloadkrb5-b11e3ceee62898638d18abd764b0b2193e593876.tar.gz
krb5-b11e3ceee62898638d18abd764b0b2193e593876.tar.xz
krb5-b11e3ceee62898638d18abd764b0b2193e593876.zip
Clean up the lock in gss_krb5int_import_cred
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25040 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi')
-rw-r--r--src/lib/gssapi/krb5/acquire_cred.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/lib/gssapi/krb5/acquire_cred.c b/src/lib/gssapi/krb5/acquire_cred.c
index df029cc32..055b3eb4c 100644
--- a/src/lib/gssapi/krb5/acquire_cred.c
+++ b/src/lib/gssapi/krb5/acquire_cred.c
@@ -845,6 +845,17 @@ gss_krb5int_import_cred(OM_uint32 *minor_status,
memset(&args, 0, sizeof(args));
+ if (req->id && req->keytab)
+ args.cred_usage = GSS_C_BOTH;
+ else if (req->id)
+ args.cred_usage = GSS_C_INITIATE;
+ else if (req->keytab)
+ args.cred_usage = GSS_C_ACCEPT;
+ else {
+ *minor_status = EINVAL;
+ return GSS_S_FAILURE;
+ }
+
if (req->keytab_principal) {
memset(&name, 0, sizeof(name));
code = k5_mutex_init(&name.lock);
@@ -859,17 +870,9 @@ gss_krb5int_import_cred(OM_uint32 *minor_status,
args.ccache = req->id;
args.keytab = req->keytab;
- if (req->id && req->keytab)
- args.cred_usage = GSS_C_BOTH;
- else if (req->id)
- args.cred_usage = GSS_C_INITIATE;
- else if (req->keytab)
- args.cred_usage = GSS_C_ACCEPT;
- else {
- *minor_status = EINVAL;
- return GSS_S_FAILURE;
- }
-
- return acquire_cred(minor_status, &args, cred_handle, &time_rec);
+ code = acquire_cred(minor_status, &args, cred_handle, &time_rec);
+ if (req->keytab_principal)
+ k5_mutex_destroy(&name.lock);
+ return code;
}