if client fails reauth, allow it to retry EAP
authorLuke Howard <lukeh@padl.com>
Wed, 9 Mar 2011 13:53:53 +0000 (00:53 +1100)
committerLuke Howard <lukeh@padl.com>
Wed, 9 Mar 2011 13:53:53 +0000 (00:53 +1100)
accept_sec_context.c

index 723c932..cc03ccf 100644 (file)
@@ -962,10 +962,15 @@ eapGssSmAcceptGssReauth(OM_uint32 *minor,
         if (major == GSS_S_COMPLETE) {
             GSSEAP_SM_TRANSITION(ctx, GSSEAP_STATE_ESTABLISHED);
         }
+        ctx->gssFlags = gssFlags;
+    } else {
+        gssDeleteSecContext(&tmpMinor, &ctx->kerberosCtx, GSS_C_NO_BUFFER);
+        ctx->flags &= ~(CTX_FLAG_KRB_REAUTH);
+        GSSEAP_SM_TRANSITION(ctx, GSSEAP_STATE_INITIAL);
+        *smFlags |= SM_FLAG_RESTART;
+        major = GSS_S_CONTINUE_NEEDED;
     }
 
-    ctx->gssFlags = gssFlags;
-
     gssReleaseName(&tmpMinor, &krbInitiator);
 
     return major;