GSSEAP_MUTEX_LOCK(&ctx->mutex);
+ /* Validate and lock credentials */
+ if (cred != GSS_C_NO_CREDENTIAL) {
+ if ((cred->flags & CRED_FLAG_ACCEPT) == 0) {
+ major = GSS_S_NO_CRED;
+ goto cleanup;
+ } else if (!gssEapCredAvailable(cred, ctx->mechanismUsed)) {
+ major = GSS_S_BAD_MECH;
+ goto cleanup;
+ }
+
+ GSSEAP_MUTEX_LOCK(&cred->mutex);
+ }
+
sm = &eapGssAcceptorSm[ctx->state];
major = gssEapVerifyToken(minor, ctx, input_token,
goto cleanup;
}
- /* Validate and lock credentials */
- if (cred != GSS_C_NO_CREDENTIAL) {
- if ((cred->flags & CRED_FLAG_ACCEPT) == 0) {
- major = GSS_S_NO_CRED;
- goto cleanup;
- } else if (!gssEapCredAvailable(cred, ctx->mechanismUsed)) {
- major = GSS_S_BAD_MECH;
- goto cleanup;
- }
-
- GSSEAP_MUTEX_LOCK(&cred->mutex);
- }
-
do {
sm = &eapGssAcceptorSm[ctx->state];