X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.git;a=blobdiff_plain;f=mech_eap%2Finquire_context.c;h=3dc31b82e0842e20eb3c70f212613fd68b40ff44;hp=d37818d34bea591f3f49f96d94fe3b1a2ac877da;hb=HEAD;hpb=527a687917e60958777a01ca7a458888bee341b8 diff --git a/mech_eap/inquire_context.c b/mech_eap/inquire_context.c index d37818d..3dc31b8 100644 --- a/mech_eap/inquire_context.c +++ b/mech_eap/inquire_context.c @@ -38,7 +38,11 @@ OM_uint32 GSSAPI_CALLCONV gss_inquire_context(OM_uint32 *minor, +#ifdef HAVE_HEIMDAL_VERSION + gss_const_ctx_id_t ctx, +#else gss_ctx_id_t ctx, +#endif gss_name_t *src_name, gss_name_t *targ_name, OM_uint32 *lifetime_rec, @@ -54,34 +58,28 @@ gss_inquire_context(OM_uint32 *minor, return GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT; } - GSSEAP_MUTEX_LOCK(&ctx->mutex); + GSSEAP_MUTEX_LOCK(&((gss_ctx_id_t)ctx)->mutex); if (src_name != NULL) { - major = gssEapDuplicateName(minor, ctx->initiatorName, src_name); - if (GSS_ERROR(major)) - goto cleanup; + if (ctx->initiatorName != GSS_C_NO_NAME) { + major = gssEapDuplicateName(minor, ctx->initiatorName, src_name); + if (GSS_ERROR(major)) + goto cleanup; + } else + *src_name = GSS_C_NO_NAME; } if (targ_name != NULL) { - major = gssEapDuplicateName(minor, ctx->acceptorName, targ_name); - if (GSS_ERROR(major)) - goto cleanup; + if (ctx->acceptorName != GSS_C_NO_NAME) { + major = gssEapDuplicateName(minor, ctx->acceptorName, targ_name); + if (GSS_ERROR(major)) + goto cleanup; + } else + *targ_name = GSS_C_NO_NAME; } - if (lifetime_rec != NULL) { - time_t now, lifetime; - - if (ctx->expiryTime == 0) { - lifetime = GSS_C_INDEFINITE; - } else { - now = time(NULL); - lifetime = now - ctx->expiryTime; - if (lifetime < 0) - lifetime = 0; - } - - *lifetime_rec = lifetime; - } + if (lifetime_rec != NULL) + gssEapContextTime(&tmpMinor, ctx, lifetime_rec); if (mech_type != NULL) { major = gssEapCanonicalizeOid(minor, ctx->mechanismUsed, 0, mech_type); @@ -105,7 +103,7 @@ gss_inquire_context(OM_uint32 *minor, *minor = 0; cleanup: - GSSEAP_MUTEX_UNLOCK(&ctx->mutex); + GSSEAP_MUTEX_UNLOCK(&((gss_ctx_id_t)ctx)->mutex); if (GSS_ERROR(major)) { gssEapReleaseName(&tmpMinor, src_name);