summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-04-22 11:19:34 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-04-22 11:19:34 +0000
commit24599cbe7f99eb86d8ee547cb19f08fe1db1f89b (patch)
treeddc5529082083129ed20a9ee16a77ae92151d662
parent6e072c2b5f93bf6a7f400eed65147c15030055a8 (diff)
downloadlasso-24599cbe7f99eb86d8ee547cb19f08fe1db1f89b.tar.gz
lasso-24599cbe7f99eb86d8ee547cb19f08fe1db1f89b.tar.xz
lasso-24599cbe7f99eb86d8ee547cb19f08fe1db1f89b.zip
SAML 2.0: lasso_logout_build_response_msg, just verify there is saved data from a previous request before switching them
* lasso/saml-2.0/logout.c: There is no need to check what the previous remote provider ID was, just that initial_remote_providerID is not NULL in order to switch request, response and remote_providerID.
-rw-r--r--lasso/saml-2.0/logout.c32
1 files changed, 12 insertions, 20 deletions
diff --git a/lasso/saml-2.0/logout.c b/lasso/saml-2.0/logout.c
index 6f41f8dc..6e8afcbf 100644
--- a/lasso/saml-2.0/logout.c
+++ b/lasso/saml-2.0/logout.c
@@ -326,29 +326,21 @@ lasso_saml20_logout_build_response_msg(LassoLogout *logout)
/* SP initiated logout */
if (logout->initial_remote_providerID) {
- LassoProvider* remote_provider = lasso_server_get_provider(profile->server, profile->remote_providerID);
-
- if (! remote_provider) {
- return LASSO_PROFILE_ERROR_UNKNOWN_PROVIDER;
- }
-
- if (remote_provider->role & LASSO_PROVIDER_ROLE_SP) {
- lasso_transfer_string(profile->remote_providerID,
- logout->initial_remote_providerID);
- lasso_transfer_gobject(profile->request, logout->initial_request);
- lasso_transfer_gobject(profile->response, logout->initial_response);
- /* if some of the logout failed, set a partial logout status code */
- if (logout->private_data->partial_logout) {
- /* reset the partial logout status */
- logout->private_data->partial_logout = FALSE;
- lasso_saml20_profile_set_response_status(profile,
- LASSO_SAML2_STATUS_CODE_SUCCESS,
- LASSO_SAML2_STATUS_CODE_PARTIAL_LOGOUT);
- }
+ lasso_transfer_string(profile->remote_providerID,
+ logout->initial_remote_providerID);
+ lasso_transfer_gobject(profile->request, logout->initial_request);
+ lasso_transfer_gobject(profile->response, logout->initial_response);
+ /* if some of the logout failed, set a partial logout status code */
+ if (logout->private_data->partial_logout) {
+ /* reset the partial logout status */
+ logout->private_data->partial_logout = FALSE;
+ lasso_saml20_profile_set_response_status(profile,
+ LASSO_SAML2_STATUS_CODE_SUCCESS,
+ LASSO_SAML2_STATUS_CODE_PARTIAL_LOGOUT);
}
}
- if (profile->response == NULL) {
+ if (! LASSO_IS_SAMLP2_STATUS_RESPONSE(profile->response)) {
/* no response set here means request denied */
response = (LassoSamlp2StatusResponse*) lasso_samlp2_logout_response_new();
lasso_check_good_rc(lasso_saml20_profile_init_response(profile, response,