From: Luke Howard Date: Sat, 12 Mar 2011 07:46:13 +0000 (+1100) Subject: don't free RADIUS context before packet X-Git-Tag: dvd/201105~12^2~118^2~2 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.orig;a=commitdiff_plain;h=4612f050cf7c83abcb370661c96f4c122ed06b5b don't free RADIUS context before packet --- diff --git a/accept_sec_context.c b/accept_sec_context.c index d192d71..77e06c5 100644 --- a/accept_sec_context.c +++ b/accept_sec_context.c @@ -512,9 +512,6 @@ eapGssSmAcceptAuthenticate(OM_uint32 *minor, ctx->acceptorCtx.vps = frresp->vps; frresp->vps = NULL; - rs_conn_destroy(ctx->acceptorCtx.radConn); - ctx->acceptorCtx.radConn = NULL; - major = acceptReadyEap(minor, ctx, cred); if (GSS_ERROR(major)) goto cleanup; @@ -530,6 +527,12 @@ cleanup: rs_request_destroy(request); if (req != NULL) rs_packet_destroy(req); + if (GSSEAP_SM_STATE(ctx) == GSSEAP_STATE_INITIATOR_EXTS) { + assert(major == GSS_S_CONTINUE_NEEDED); + + rs_conn_destroy(ctx->acceptorCtx.radConn); + ctx->acceptorCtx.radConn = NULL; + } return major; } diff --git a/util_radius.cpp b/util_radius.cpp index 90ce876..c367cb6 100644 --- a/util_radius.cpp +++ b/util_radius.cpp @@ -791,7 +791,7 @@ gssEapRadiusMapError(OM_uint32 *minor, *minor = ERROR_TABLE_BASE_rse + code; - gssEapSaveStatusInfo(*minor, "%s", rs_err_msg(err, 0)); + gssEapSaveStatusInfo(*minor, "%s", rs_err_msg(err)); rs_err_free(err); return GSS_S_FAILURE;