X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.git;a=blobdiff_plain;f=mech_eap%2Finquire_sec_context_by_oid.c;h=4b2c0ed7ce9cd0e186820ab75dfd4c5d70cde891;hp=7435f2e9150c0e2548f702a17796f0d104a8640e;hb=HEAD;hpb=e892880f0248996135770c9f31a1f83fece3ae1d diff --git a/mech_eap/inquire_sec_context_by_oid.c b/mech_eap/inquire_sec_context_by_oid.c index 7435f2e..4b2c0ed 100644 --- a/mech_eap/inquire_sec_context_by_oid.c +++ b/mech_eap/inquire_sec_context_by_oid.c @@ -83,7 +83,7 @@ zeroAndReleaseBufferSet(gss_buffer_set_t *dataSet) static OM_uint32 inquireSessionKey(OM_uint32 *minor, - const gss_ctx_id_t ctx, + gss_const_ctx_id_t ctx, const gss_OID desired_object GSSEAP_UNUSED, gss_buffer_set_t *dataSet) { @@ -119,7 +119,7 @@ cleanup: static OM_uint32 inquireNegoExKey(OM_uint32 *minor, - const gss_ctx_id_t ctx, + gss_const_ctx_id_t ctx, const gss_OID desired_object, gss_buffer_set_t *dataSet) { @@ -156,8 +156,16 @@ inquireNegoExKey(OM_uint32 *minor, keySize = KRB_KEY_LENGTH(&ctx->rfc3961Key); - major = gssEapPseudoRandom(minor, ctx, GSS_C_PRF_KEY_FULL, &salt, - keySize, &key); + key.value = GSSEAP_MALLOC(keySize); + if (key.value == NULL) { + major = GSS_S_FAILURE; + *minor = ENOMEM; + goto cleanup; + } + + key.length = keySize; + + major = gssEapPseudoRandom(minor, ctx, GSS_C_PRF_KEY_FULL, &salt, &key); if (GSS_ERROR(major)) goto cleanup; @@ -185,7 +193,7 @@ cleanup: static struct { gss_OID_desc oid; - OM_uint32 (*inquire)(OM_uint32 *, const gss_ctx_id_t, + OM_uint32 (*inquire)(OM_uint32 *, gss_const_ctx_id_t, const gss_OID, gss_buffer_set_t *); } inquireCtxOps[] = { { @@ -212,7 +220,11 @@ static struct { OM_uint32 GSSAPI_CALLCONV gss_inquire_sec_context_by_oid(OM_uint32 *minor, +#ifdef HAVE_HEIMDAL_VERSION + gss_const_ctx_id_t ctx, +#else const gss_ctx_id_t ctx, +#endif const gss_OID desired_object, gss_buffer_set_t *data_set) { @@ -221,7 +233,7 @@ gss_inquire_sec_context_by_oid(OM_uint32 *minor, *data_set = GSS_C_NO_BUFFER_SET; - GSSEAP_MUTEX_LOCK(&ctx->mutex); + GSSEAP_MUTEX_LOCK(&((gss_ctx_id_t)ctx)->mutex); #if 0 if (!CTX_IS_ESTABLISHED(ctx)) { @@ -242,7 +254,7 @@ gss_inquire_sec_context_by_oid(OM_uint32 *minor, } } - GSSEAP_MUTEX_UNLOCK(&ctx->mutex); + GSSEAP_MUTEX_UNLOCK(&((gss_ctx_id_t)ctx)->mutex); return major; }