Fix for OpenSSH interoperability
[mech_eap.orig] / util_cred.c
index 64b9284..a2a01ba 100644 (file)
@@ -184,7 +184,13 @@ gssEapAcquireCred(OM_uint32 *minor,
         }
 
         if (nameBuf.length != 0) {
-            major = gssEapImportName(minor, &nameBuf, nameType, &cred->name);
+            gss_OID mech = GSS_C_NO_OID;
+
+            if (cred->mechanisms != GSS_C_NO_OID_SET &&
+                cred->mechanisms->count == 1)
+                mech = &cred->mechanisms->elements[0];
+
+            major = gssEapImportName(minor, &nameBuf, nameType, mech, &cred->name);
             if (GSS_ERROR(major))
                 goto cleanup;
         }