GSSEAP_MUTEX_UNLOCK(&target->mutex);
}
- if (mech == GSS_C_NULL_OID) {
- major = gssEapDefaultMech(minor, &ctx->mechanismUsed);
- } else if (gssEapIsConcreteMechanismOid(mech)) {
- if (!gssEapInternalizeOid(mech, &ctx->mechanismUsed))
- major = duplicateOid(minor, mech, &ctx->mechanismUsed);
- } else {
- major = GSS_S_BAD_MECH;
- *minor = GSSEAP_WRONG_MECH;
- }
+ major = gssEapCanonicalizeOid(minor,
+ mech,
+ OID_FLAG_NULL_VALID | OID_FLAG_MAP_NULL_TO_DEFAULT_MECH,
+ &ctx->mechanismUsed);
if (GSS_ERROR(major))
return major;
ctx->acceptorName == GSS_C_NO_NAME) {
/* Accept target name hint from acceptor */
major = gssEapImportName(minor, inputToken,
- GSS_C_NT_USER_NAME, &ctx->acceptorName);
+ GSS_C_NT_USER_NAME,
+ ctx->mechanismUsed,
+ &ctx->acceptorName);
if (GSS_ERROR(major))
return major;
}
goto cleanup;
if (actual_mech_type != NULL) {
- if (!gssEapInternalizeOid(ctx->mechanismUsed, actual_mech_type))
- duplicateOid(&tmpMinor, ctx->mechanismUsed, actual_mech_type);
+ OM_uint32 tmpMajor;
+
+ tmpMajor = gssEapCanonicalizeOid(&tmpMinor, ctx->mechanismUsed, 0, actual_mech_type);
+ if (GSS_ERROR(tmpMajor)) {
+ major = tmpMajor;
+ *minor = tmpMinor;
+ goto cleanup;
+ }
}
if (ret_flags != NULL)
*ret_flags = ctx->gssFlags;