-
- mech.length = p[1];
- mech.elements = &p[2];
-
- CHECK_REMAIN(mech.length);
-
- if (!gssEapIsMechanismOid(&mech)) {
- major = GSS_S_BAD_NAME;
- *minor = GSSEAP_WRONG_MECH;
- goto cleanup;
- }
-
- if (oidEqual(&mech, GSS_EAP_MECHANISM)) {
- name->mechanismUsed = GSS_C_NO_OID;
- } else if (!gssEapInternalizeOid(&mech, &name->mechanismUsed)) {
- major = duplicateOid(minor, &mech, &name->mechanismUsed);
- if (GSS_ERROR(major))
- goto cleanup;
- }
-
- UPDATE_REMAIN(2 + mech.length);
+ if (p[1] != GSS_EAP_MECHANISM->length)
+ return GSS_S_BAD_MECH;
+ if (memcmp(&p[2], GSS_EAP_MECHANISM->elements, GSS_EAP_MECHANISM->length))
+ return GSS_S_BAD_MECH;
+ UPDATE_REMAIN(2 + GSS_EAP_MECHANISM->length);