From: Luke Howard Date: Sat, 2 Oct 2010 20:18:59 +0000 (+0200) Subject: more locking cleanups X-Git-Tag: vm/20110310~182 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.orig;a=commitdiff_plain;h=7d179c490f6395e47fa25735c6ad828f2ef04cfe more locking cleanups --- diff --git a/verify_mic.c b/verify_mic.c index 7eeefd1..1403eca 100644 --- a/verify_mic.c +++ b/verify_mic.c @@ -43,6 +43,8 @@ gss_verify_mic(OM_uint32 *minor, gss_iov_buffer_desc iov[3]; int conf_state; + *minor = 0; + if (message_token->length < 16) { *minor = KRB5_BAD_MSIZE; return GSS_S_BAD_SIG; diff --git a/wrap_iov.c b/wrap_iov.c index cdf9c3b..659d634 100644 --- a/wrap_iov.c +++ b/wrap_iov.c @@ -328,18 +328,24 @@ gss_wrap_iov(OM_uint32 *minor, { OM_uint32 major; + *minor = 0; + if (ctx == GSS_C_NO_CONTEXT) return GSS_S_NO_CONTEXT; GSSEAP_MUTEX_LOCK(&ctx->mutex); if (!CTX_IS_ESTABLISHED(ctx)) { - *minor = 0; major = GSS_S_NO_CONTEXT; - } else - major = gssEapWrapOrGetMIC(minor, ctx, conf_req_flag, conf_state, - iov, iov_count, TOK_TYPE_WRAP); + goto cleanup; + } + major = gssEapWrapOrGetMIC(minor, ctx, conf_req_flag, conf_state, + iov, iov_count, TOK_TYPE_WRAP); + if (GSS_ERROR(major)) + goto cleanup; + +cleanup: GSSEAP_MUTEX_UNLOCK(&ctx->mutex); return major; diff --git a/wrap_iov_length.c b/wrap_iov_length.c index 7930693..24bc1a5 100644 --- a/wrap_iov_length.c +++ b/wrap_iov_length.c @@ -190,6 +190,8 @@ gss_wrap_iov_length(OM_uint32 *minor, { OM_uint32 major; + *minor = 0; + if (ctx == GSS_C_NO_CONTEXT) return GSS_S_NO_CONTEXT;