X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=moonshot%2Fmech_eap%2Feap_mech.c;h=96e00c2dafd63596fc3bf005e72b63b12684e9b7;hb=7b8ddef2e76be12186d7dd71b71b63a96093d49c;hp=fb827dd9930fe777bf9e773c5c74a9283d85007e;hpb=a9bf34aa6f6cf8d8ab975989ae5103798d7e3e75;p=moonshot.git diff --git a/moonshot/mech_eap/eap_mech.c b/moonshot/mech_eap/eap_mech.c index fb827dd..96e00c2 100644 --- a/moonshot/mech_eap/eap_mech.c +++ b/moonshot/mech_eap/eap_mech.c @@ -165,34 +165,55 @@ gssEapInitLibRadsec(OM_uint32 *minor) return GSS_S_COMPLETE; } -static void gssEapInitiatorInit(void) __attribute__((constructor)); -static void gssEapFinalize(void) __attribute__((destructor)); +void gssEapFinalize(void) GSSEAP_DESTRUCTOR; -static void -gssEapInitiatorInit(void) +OM_uint32 +gssEapInitiatorInit(OM_uint32 *minor) { - OM_uint32 major, minor; + OM_uint32 major; initialize_eapg_error_table(); initialize_rse_error_table(); - major = gssEapInitLibEap(&minor); - assert(major == GSS_S_COMPLETE); + major = gssEapInitLibEap(minor); + if (GSS_ERROR(major)) + return major; - major = gssEapInitLibRadsec(&minor); - assert(major == GSS_S_COMPLETE); + major = gssEapInitLibRadsec(minor); + if (GSS_ERROR(major)) + return major; #ifdef GSSEAP_ENABLE_REAUTH - major = gssEapReauthInitialize(&minor); - assert(major == GSS_S_COMPLETE); + major = gssEapReauthInitialize(minor); + if (GSS_ERROR(major)) + return major; #endif + + *minor = 0; + return GSS_S_COMPLETE; } -static void +void gssEapFinalize(void) { +#ifdef GSSEAP_ENABLE_ACCEPTOR OM_uint32 minor; gssEapAttrProvidersFinalize(&minor); +#endif eap_peer_unregister_methods(); } + +#ifdef GSSEAP_CONSTRUCTOR +static void gssEapInitiatorInitAssert(void) GSSEAP_CONSTRUCTOR; + +static void +gssEapInitiatorInitAssert(void) +{ + OM_uint32 major, minor; + + major = gssEapInitiatorInit(&minor); + + GSSEAP_ASSERT(!GSS_ERROR(major)); +} +#endif