X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=inquire_names_for_mech.c;h=3f5321720e01f49111f264cc8777e6ba9c0ba2ba;hb=163856b1a70d7773c46d4ea5495b85c4dce0f089;hp=e761739011b0acaf67c53af64f1cf8afa608f329;hpb=646a981cdd5c439b4b4fa5dde8f742a1a2a05b43;p=mech_eap.orig diff --git a/inquire_names_for_mech.c b/inquire_names_for_mech.c index e761739..3f53217 100644 --- a/inquire_names_for_mech.c +++ b/inquire_names_for_mech.c @@ -30,49 +30,48 @@ * SUCH DAMAGE. */ +/* + * Return supported name OID types. + */ + #include "gssapiP_eap.h" OM_uint32 gss_inquire_names_for_mech(OM_uint32 *minor, gss_OID mechanism, - gss_OID_set *name_types) + gss_OID_set *ret_name_types) { OM_uint32 major, tmpMinor; + gss_OID nameTypes[] = { + GSS_C_NT_USER_NAME, + GSS_C_NT_HOSTBASED_SERVICE, + GSS_C_NT_EXPORT_NAME, +#ifdef HAVE_GSS_C_NT_COMPOSITE_EXPORT + GSS_C_NT_COMPOSITE_EXPORT, +#endif + GSS_EAP_NT_PRINCIPAL_NAME, + GSS_C_NT_ANONYMOUS, + }; + size_t i; if (!gssEapIsMechanismOid(mechanism)) { - *minor = 0; + *minor = GSSEAP_WRONG_MECH; return GSS_S_BAD_MECH; } - major = gss_create_empty_oid_set(minor, name_types); - if (GSS_ERROR(major)) - goto cleanup; - - major = gss_add_oid_set_member(minor, GSS_C_NT_USER_NAME, name_types); - if (GSS_ERROR(major)) - goto cleanup; - - major = gss_add_oid_set_member(minor, GSS_C_NT_HOSTBASED_SERVICE, name_types); + major = gss_create_empty_oid_set(minor, ret_name_types); if (GSS_ERROR(major)) goto cleanup; - major = gss_add_oid_set_member(minor, GSS_C_NT_EXPORT_NAME, name_types); - if (GSS_ERROR(major)) - goto cleanup; - -#ifdef HAVE_GSS_C_NT_COMPOSITE_EXPORT - major = gss_add_oid_set_member(minor, GSS_C_NT_COMPOSITE_EXPORT, name_types); - if (GSS_ERROR(major)) - goto cleanup; -#endif - - major = gss_add_oid_set_member(minor, GSS_EAP_NT_PRINCIPAL_NAME, name_types); - if (GSS_ERROR(major)) - goto cleanup; + for (i = 0; i < sizeof(nameTypes)/sizeof(nameTypes[0]); i++) { + major = gss_add_oid_set_member(minor, nameTypes[i], ret_name_types); + if (GSS_ERROR(major)) + goto cleanup; + } cleanup: if (GSS_ERROR(major)) - gss_release_oid_set(&tmpMinor, name_types); + gss_release_oid_set(&tmpMinor, ret_name_types); return major; }