diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2005-03-29 08:38:00 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2005-03-29 08:38:00 +0000 |
| commit | 3cc8966630d4ebc0f5a5c6fa85bd1f490a97ba1e (patch) | |
| tree | 70bb1d3a639e086eac221fe8f527d9030cea12b0 | |
| parent | ddd2cbefc99615208eee8900776b2bb3ee06c757 (diff) | |
| download | lasso-3cc8966630d4ebc0f5a5c6fa85bd1f490a97ba1e.tar.gz lasso-3cc8966630d4ebc0f5a5c6fa85bd1f490a97ba1e.tar.xz lasso-3cc8966630d4ebc0f5a5c6fa85bd1f490a97ba1e.zip | |
checks for Status before Assertion; so lasso doesn't restore an old assertion.
| -rw-r--r-- | lasso/id-ff/login.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c index abf56fe0..9abf1ad6 100644 --- a/lasso/id-ff/login.c +++ b/lasso/id-ff/login.c @@ -903,26 +903,22 @@ lasso_login_build_response_msg(LassoLogin *login, gchar *remote_providerID) LassoSamlAssertion *assertion; LassoSamlpStatus *status; + status = lasso_session_get_status(profile->session, remote_providerID); assertion = lasso_session_get_assertion(profile->session, profile->remote_providerID); - if (assertion) { + if (status) { + lasso_node_destroy(LASSO_NODE(LASSO_SAMLP_RESPONSE( + profile->response)->Status)); + LASSO_SAMLP_RESPONSE(profile->response)->Status = + g_object_ref(status); + lasso_session_remove_status(profile->session, + remote_providerID); + } else if (assertion) { LASSO_SAMLP_RESPONSE(profile->response)->Assertion = g_list_append(NULL, g_object_ref(assertion)); lasso_profile_set_response_status(profile, LASSO_SAML_STATUS_CODE_SUCCESS); lasso_session_remove_status(profile->session, remote_providerID); - } else { - /* no assertion, get back status code */ - status = lasso_session_get_status(profile->session, - remote_providerID); - if (status) { - lasso_node_destroy(LASSO_NODE(LASSO_SAMLP_RESPONSE( - profile->response)->Status)); - LASSO_SAMLP_RESPONSE(profile->response)->Status = - g_object_ref(status); - lasso_session_remove_status(profile->session, - remote_providerID); - } } } } else { |
