ret = provider->initFromExistingContext(this,
manager->m_providers[i]);
- if (ret == false)
+ if (ret == false) {
+ delete provider;
+ m_providers[i] = NULL;
break;
+ }
}
return ret;
continue;
ret = provider->initFromGssContext(this, cred, ctx);
- if (ret == false)
+ if (ret == false) {
+ delete provider;
+ m_providers[i] = NULL;
break;
+ }
}
return ret;
ret = provider->initFromGssContext(this,
GSS_C_NO_CREDENTIAL,
GSS_C_NO_CONTEXT);
- if (ret == false)
+ if (ret == false) {
+ delete provider;
+ m_providers[i] = NULL;
break;
+ }
}
return ret;
gss_eap_attr_provider *
gss_eap_attr_ctx::getPrimaryProvider(void) const
{
- return m_providers[ATTR_TYPE_RADIUS];
+ return m_providers[ATTR_TYPE_MIN];
}
/*
return GSS_S_COMPLETE;
}
-OM_uint32
-gssEapAttrProvidersInit(OM_uint32 *minor)
-{
- try {
- if (gss_eap_radius_attr_provider::init() &&
- gss_eap_saml_assertion_provider::init() &&
- gss_eap_saml_attr_provider::init() &&
- gss_eap_shib_attr_provider::init())
- return GSS_S_COMPLETE;
- } catch (std::exception &e) {
- return mapException(minor, e);
- }
-
- return GSS_S_FAILURE;
-}
-
-OM_uint32
-gssEapAttrProvidersFinalize(OM_uint32 *minor)
-{
- try {
- gss_eap_shib_attr_provider::finalize();
- gss_eap_saml_attr_provider::finalize();
- gss_eap_saml_assertion_provider::finalize();
- gss_eap_radius_attr_provider::finalize();
- } catch (std::exception &e) {
- return mapException(minor, e);
- }
-
- return GSS_S_COMPLETE;
-}
-
/*
* Public accessor for initialisng a context from a GSS context. Also
* sets expiry time on GSS context as a side-effect.