X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=mech_eap%2Faccept_sec_context.c;h=16e60fbd1a1f814227aade4ebc98fd8b87efea1f;hb=806475d7e7d185314fcba8417660369d01ca47f7;hp=b6e516db5987c1e7495b5f0e9f9e0cf795b49554;hpb=1b6e92c78b942de0c4ef4ca9e78f74c87aa16938;p=moonshot.git diff --git a/mech_eap/accept_sec_context.c b/mech_eap/accept_sec_context.c index b6e516d..16e60fb 100644 --- a/mech_eap/accept_sec_context.c +++ b/mech_eap/accept_sec_context.c @@ -72,7 +72,7 @@ acceptReadyEap(OM_uint32 *minor, gss_ctx_id_t ctx, gss_cred_id_t cred) major = gssEapRadiusGetRawAvp(minor, ctx->acceptorCtx.vps, PW_USER_NAME, 0, &vp); - if (major == GSS_S_COMPLETE) { + if (major == GSS_S_COMPLETE && vp->length) { nameBuf.length = vp->length; nameBuf.value = vp->vp_strvalue; } else { @@ -121,6 +121,11 @@ acceptReadyEap(OM_uint32 *minor, gss_ctx_id_t ctx, gss_cred_id_t cred) if (GSS_ERROR(major)) return major; + if (ctx->expiryTime < time(NULL)) { + *minor = GSSEAP_CRED_EXPIRED; + return GSS_S_CREDENTIALS_EXPIRED; + } + *minor = 0; return GSS_S_COMPLETE; } @@ -464,7 +469,7 @@ createRadiusHandle(OM_uint32 *minor, assert(actx->radContext == NULL); assert(actx->radConn == NULL); - if (rs_context_create(&actx->radContext, RS_DICT_FILE) != 0) { + if (rs_context_create(&actx->radContext) != 0) { *minor = GSSEAP_RADSEC_CONTEXT_FAILURE; return GSS_S_FAILURE; } @@ -486,6 +491,11 @@ createRadiusHandle(OM_uint32 *minor, goto fail; } + if (rs_context_init_freeradius_dict(actx->radContext, NULL) != 0) { + err = rs_err_ctx_pop(actx->radContext); + goto fail; + } + if (rs_conn_create(actx->radContext, &actx->radConn, configStanza) != 0) { err = rs_err_conn_pop(actx->radConn); goto fail;