Don't expect OID for imported initiator name
authorLuke Howard <lukeh@padl.com>
Sat, 11 Aug 2012 04:23:05 +0000 (14:23 +1000)
committerLuke Howard <lukeh@padl.com>
Sat, 11 Aug 2012 04:23:05 +0000 (14:23 +1000)
mech_eap/import_sec_context.c

index ed20b23..a0ebb8c 100644 (file)
@@ -214,7 +214,7 @@ importName(OM_uint32 *minor,
            size_t *pRemain,
            gss_name_t *pName)
 {
-    OM_uint32 major, tmpMinor;
+    OM_uint32 major, tmpMinor, flags;
     unsigned char *p = *pBuf;
     size_t remain = *pRemain;
     gss_buffer_desc tmp;
@@ -233,12 +233,15 @@ importName(OM_uint32 *minor,
 
         tmp.value = p + 4;
 
-        major = gssEapImportNameInternal(minor, &tmp, pName,
-                                         EXPORT_NAME_FLAG_COMPOSITE);
+        flags = EXPORT_NAME_FLAG_COMPOSITE;
+        if (mech == GSS_C_NO_OID)
+            flags |= EXPORT_NAME_FLAG_OID;
+
+        major = gssEapImportNameInternal(minor, &tmp, pName, flags);
         if (GSS_ERROR(major))
             return major;
 
-        if (mech != GSS_C_NO_OID) {
+        if ((flags & EXPORT_NAME_FLAG_OID) == 0) {
             major = gssEapCanonicalizeOid(minor, mech, 0, &(*pName)->mechanismUsed);
             if (GSS_ERROR(major)) {
                 gssEapReleaseName(&tmpMinor, pName);