From 3cc8966630d4ebc0f5a5c6fa85bd1f490a97ba1e Mon Sep 17 00:00:00 2001 From: Frederic Peters Date: Tue, 29 Mar 2005 08:38:00 +0000 Subject: checks for Status before Assertion; so lasso doesn't restore an old assertion. --- lasso/id-ff/login.c | 22 +++++++++------------- 1 file 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 { -- cgit