Make ATTR_TYPE_MAX the highest attribute, not +1
[mech_eap.orig] / accept_sec_context.c
index 4d68918..6353eea 100644 (file)
@@ -209,13 +209,17 @@ serverGetEapUser(void *ctx,
     /*
      * OK, obviously there is no real security here, this is simply
      * for testing the token exchange; this code will be completely
-     * replaced with libradsec once that library is available.
+     * replaced with libradius once that library is available.
      */
     user->methods[0].vendor = EAP_VENDOR_IETF;
     user->methods[0].method = EAP_TYPE_MSCHAPV2;
     user->password = (unsigned char *)strdup(" ");
     user->password_len = 1;
 
+    gssCtx->initiatorName->attrCtx = gssEapCreateAttrContext(NULL, gssCtx);
+    if (gssCtx->initiatorName->attrCtx != NULL)
+        gssCtx->initiatorName->flags |= NAME_FLAG_COMPOSITE;
+
     return 0;
 }
 
@@ -397,7 +401,7 @@ eapGssSmAcceptEstablished(OM_uint32 *minor,
     return GSS_S_BAD_STATUS;
 }
 
-static struct eap_gss_acceptor_sm {
+static struct gss_eap_acceptor_sm {
     enum gss_eap_token_type inputTokenType;
     enum gss_eap_token_type outputTokenType;
     OM_uint32 (*processToken)(OM_uint32 *,
@@ -432,14 +436,12 @@ gss_accept_sec_context(OM_uint32 *minor,
     OM_uint32 major;
     OM_uint32 tmpMajor, tmpMinor;
     gss_ctx_id_t ctx = *context_handle;
-    struct eap_gss_acceptor_sm *sm = NULL;
-    gss_buffer_desc innerInputToken, innerOutputToken;
+    struct gss_eap_acceptor_sm *sm = NULL;
+    gss_buffer_desc innerInputToken = GSS_C_EMPTY_BUFFER;
+    gss_buffer_desc innerOutputToken = GSS_C_EMPTY_BUFFER;
 
     *minor = 0;
 
-    innerOutputToken.length = 0;
-    innerOutputToken.value = NULL;
-
     output_token->length = 0;
     output_token->value = NULL;