From bf970916ce559ac04bd9813d50ff2b8b9d29cc87 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Thu, 17 Mar 2011 21:34:22 +1100 Subject: [PATCH] implement gss_inquire_mechs_for_name properly, although mechglue does not appear to use it --- mech_eap/inquire_mechs_for_name.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/mech_eap/inquire_mechs_for_name.c b/mech_eap/inquire_mechs_for_name.c index f8a5d06..ca5d365 100644 --- a/mech_eap/inquire_mechs_for_name.c +++ b/mech_eap/inquire_mechs_for_name.c @@ -38,8 +38,32 @@ OM_uint32 gss_inquire_mechs_for_name(OM_uint32 *minor, - const gss_name_t input_name GSSEAP_UNUSED, + const gss_name_t input_name, gss_OID_set *mech_types) { - return gssEapIndicateMechs(minor, mech_types); + OM_uint32 major, tmpMinor; + + *minor = 0; + *mech_types = GSS_C_NO_OID_SET; + + if (input_name != GSS_C_NO_NAME && + input_name->mechanismUsed != GSS_C_NO_OID) { + major = gss_create_empty_oid_set(minor, mech_types); + if (GSS_ERROR(major)) + return major; + + major = gss_add_oid_set_member(minor, + input_name->mechanismUsed, + mech_types); + if (GSS_ERROR(major)) { + gss_release_oid_set(&tmpMinor, mech_types); + return major; + } + } else { + major = gssEapIndicateMechs(minor, mech_types); + if (GSS_ERROR(major)) + return major; + } + + return major; } -- 2.1.4