From e3a4d7c6992736a83c7aaeda31cd1bed021fd9dd 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 --- inquire_mechs_for_name.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/inquire_mechs_for_name.c b/inquire_mechs_for_name.c index f8a5d06..ca5d365 100644 --- a/inquire_mechs_for_name.c +++ b/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