From: Luke Howard Date: Tue, 19 Apr 2011 16:58:38 +0000 (+0200) Subject: Allow composite names in GSS_C_NT_EXPORT_NAME X-Git-Tag: tr-beta1~197 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=moonshot.git;a=commitdiff_plain;h=de13ec1bef665ffca5093daa5e957018cc0bc5b8 Allow composite names in GSS_C_NT_EXPORT_NAME --- diff --git a/mech_eap/util.h b/mech_eap/util.h index 1a51d6f..b3399be 100644 --- a/mech_eap/util.h +++ b/mech_eap/util.h @@ -452,6 +452,7 @@ gssEapSaslNameToOid(const gss_buffer_t name); /* util_name.c */ #define EXPORT_NAME_FLAG_OID 0x1 #define EXPORT_NAME_FLAG_COMPOSITE 0x2 +#define EXPORT_NAME_FLAG_ALLOW_COMPOSITE 0x4 OM_uint32 gssEapAllocName(OM_uint32 *minor, gss_name_t *pName); OM_uint32 gssEapReleaseName(OM_uint32 *minor, gss_name_t *pName); diff --git a/mech_eap/util_name.c b/mech_eap/util_name.c index 84478fd..fbd4b8a 100644 --- a/mech_eap/util_name.c +++ b/mech_eap/util_name.c @@ -339,7 +339,6 @@ gssEapImportNameInternal(OM_uint32 *minor, unsigned char *p; size_t len, remain; gss_buffer_desc buf; - enum gss_eap_token_type tokType; gss_name_t name = GSS_C_NO_NAME; gss_OID mechanismUsed = GSS_C_NO_OID; @@ -350,6 +349,8 @@ gssEapImportNameInternal(OM_uint32 *minor, if (flags & EXPORT_NAME_FLAG_OID) { gss_OID_desc mech; + enum gss_eap_token_type tokType; + uint16_t wireTokType; /* TOK_ID || MECH_OID_LEN || MECH_OID */ if (remain < 6) { @@ -363,7 +364,15 @@ gssEapImportNameInternal(OM_uint32 *minor, tokType = TOK_TYPE_EXPORT_NAME; /* TOK_ID */ - if (load_uint16_be(p) != tokType) { + wireTokType = load_uint16_be(p); + + if ((flags & EXPORT_NAME_FLAG_ALLOW_COMPOSITE) && + wireTokType == TOK_TYPE_EXPORT_NAME_COMPOSITE) { + tokType = TOK_TYPE_EXPORT_NAME_COMPOSITE; + flags |= EXPORT_NAME_FLAG_COMPOSITE; + } + + if (wireTokType != tokType) { *minor = GSSEAP_WRONG_TOK_ID; return GSS_S_BAD_NAME; } @@ -448,7 +457,8 @@ importExportName(OM_uint32 *minor, gss_name_t *name) { return gssEapImportNameInternal(minor, nameBuffer, name, - EXPORT_NAME_FLAG_OID); + EXPORT_NAME_FLAG_OID | + EXPORT_NAME_FLAG_ALLOW_COMPOSITE); } #ifdef HAVE_GSS_C_NT_COMPOSITE_EXPORT