aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2010-10-25 20:17:54 +0000
committerGreg Hudson <ghudson@mit.edu>2010-10-25 20:17:54 +0000
commitde8d9634dbe6b86f60d4e2adbdad5cda5fc8c9aa (patch)
treec1ec933e396f4e111069b33fd1c2bc8eb12c66cb
parent6877bdbad15700eacb9d946809102507ca23e5d4 (diff)
downloadkrb5-de8d9634dbe6b86f60d4e2adbdad5cda5fc8c9aa.zip
krb5-de8d9634dbe6b86f60d4e2adbdad5cda5fc8c9aa.tar.gz
krb5-de8d9634dbe6b86f60d4e2adbdad5cda5fc8c9aa.tar.bz2
Use safer output parameter handling in
krb5_gss_acquire_cred_impersonate_name and its subsidiary helpers. ticket: 6796 target_version: 1.9 tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24481 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/lib/gssapi/krb5/s4u_gss_glue.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/gssapi/krb5/s4u_gss_glue.c b/src/lib/gssapi/krb5/s4u_gss_glue.c
index cecbbb0..5e75aed 100644
--- a/src/lib/gssapi/krb5/s4u_gss_glue.c
+++ b/src/lib/gssapi/krb5/s4u_gss_glue.c
@@ -50,8 +50,8 @@ kg_impersonate_name(OM_uint32 *minor_status,
krb5_error_code code;
krb5_creds in_creds, *out_creds = NULL;
+ *output_cred = NULL;
memset(&in_creds, 0, sizeof(in_creds));
- memset(&out_creds, 0, sizeof(out_creds));
in_creds.client = user->princ;
in_creds.server = impersonator_cred->name->princ;
@@ -161,7 +161,8 @@ krb5_gss_acquire_cred_impersonate_name(OM_uint32 *minor_status,
time_rec,
context);
- *output_cred_handle = (gss_cred_id_t)cred;
+ if (!GSS_ERROR(major_status))
+ *output_cred_handle = (gss_cred_id_t)cred;
k5_mutex_unlock(&((krb5_gss_cred_id_t)impersonator_cred_handle)->lock);
krb5_free_context(context);
@@ -183,6 +184,7 @@ kg_compose_deleg_cred(OM_uint32 *minor_status,
krb5_error_code code;
krb5_gss_cred_id_t cred = NULL;
+ *output_cred = NULL;
k5_mutex_assert_locked(&impersonator_cred->lock);
if (!kg_is_initiator_cred(impersonator_cred) ||