From 01ae7d3439b5e0fd0b23e9b6c466933db71021b1 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Wed, 13 Oct 2010 09:19:05 +1100 Subject: [PATCH] copy name flags --- gsseap_err.et | 1 + init_sec_context.c | 2 ++ mech_invoke.c | 2 +- util_name.c | 2 ++ 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gsseap_err.et b/gsseap_err.et index 9d2e861..c92def6 100644 --- a/gsseap_err.et +++ b/gsseap_err.et @@ -118,5 +118,6 @@ error_code GSSEAP_ATTR_CONTEXT_FAILURE, "Failed to initialise attribute cont # error_code GSSEAP_BINDINGS_MISMATCH, "Channel bindings do not match" error_code GSSEAP_NO_MECHGLUE_SYMBOL, "Could not find symbol in mechanism glue" +error_code GSSEAP_BAD_INVOCATION, "Bad mechanism invoke OID" end diff --git a/init_sec_context.c b/init_sec_context.c index 4a23931..eb5a76d 100644 --- a/init_sec_context.c +++ b/init_sec_context.c @@ -221,6 +221,8 @@ peerConfigInit(OM_uint32 *minor, eapPeerConfig->fragment_size = 1024; wpa_debug_level = 0; + assert(cred->name != GSS_C_NO_NAME); + if ((cred->name->flags & (NAME_FLAG_NAI | NAME_FLAG_SERVICE)) == 0) { *minor = GSSEAP_BAD_INITIATOR_NAME; return GSS_S_BAD_NAME; diff --git a/mech_invoke.c b/mech_invoke.c index ab7fa69..62aad48 100644 --- a/mech_invoke.c +++ b/mech_invoke.c @@ -38,7 +38,7 @@ gssspi_mech_invoke(OM_uint32 *minor, const gss_OID desired_object, gss_buffer_t value) { - *minor = 0; + *minor = GSSEAP_BAD_INVOCATION; return GSS_S_UNAVAILABLE; } diff --git a/util_name.c b/util_name.c index 7e7d25f..4b9ab95 100644 --- a/util_name.c +++ b/util_name.c @@ -497,6 +497,8 @@ gssEapDuplicateName(OM_uint32 *minor, return major; } + name->flags = input_name->flags; + *minor = krb5_copy_principal(krbContext, input_name->krbPrincipal, &name->krbPrincipal); if (*minor != 0) { -- 2.1.4