diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-04-22 11:19:34 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-04-22 11:19:34 +0000 |
| commit | 24599cbe7f99eb86d8ee547cb19f08fe1db1f89b (patch) | |
| tree | ddc5529082083129ed20a9ee16a77ae92151d662 | |
| parent | 6e072c2b5f93bf6a7f400eed65147c15030055a8 (diff) | |
| download | lasso-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.c | 32 |
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, |
