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~122 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.orig;a=commitdiff_plain;h=75c30d4c2d2e937c734f1e204f0478e0b5490866 don't free RADIUS context before packet --- diff --git a/accept_sec_context.c b/accept_sec_context.c index 9036c85..b1c6754 100644 --- a/accept_sec_context.c +++ b/accept_sec_context.c @@ -575,9 +575,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; @@ -594,6 +591,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 f730ddb..48fa6f0 100644 --- a/util_radius.cpp +++ b/util_radius.cpp @@ -810,7 +810,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;