From: Luke Howard Date: Wed, 6 Oct 2010 21:02:42 +0000 (+0200) Subject: cleanup exception handling X-Git-Tag: vm/20110310~175 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.orig;a=commitdiff_plain;h=16bececddc0bd0ac4d660a4412a3d17cf323b782 cleanup exception handling --- diff --git a/wrap.c b/wrap.c index 0fa24ef..0407a33 100644 --- a/wrap.c +++ b/wrap.c @@ -41,7 +41,7 @@ gss_wrap(OM_uint32 *minor, int *conf_state, gss_buffer_t output_message_buffer) { - OM_uint32 major = GSS_C_NO_CONTEXT; + OM_uint32 major; if (ctx == GSS_C_NO_CONTEXT) { *minor = EINVAL; @@ -52,12 +52,18 @@ gss_wrap(OM_uint32 *minor, GSSEAP_MUTEX_LOCK(&ctx->mutex); - if (CTX_IS_ESTABLISHED(ctx)) { - major = gssEapWrap(minor, ctx, conf_req_flag, qop_req, - input_message_buffer, - conf_state, output_message_buffer); + if (!CTX_IS_ESTABLISHED(ctx)) { + major = GSS_S_NO_CONTEXT; + goto cleanup; } + major = gssEapWrap(minor, ctx, conf_req_flag, qop_req, + input_message_buffer, + conf_state, output_message_buffer); + if (GSS_ERROR(major)) + goto cleanup; + +cleanup: GSSEAP_MUTEX_UNLOCK(&ctx->mutex); return major;