summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/id-ff/logout.c13
-rw-r--r--lasso/saml-2.0/logout.c13
2 files changed, 24 insertions, 2 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 98c6c0bb..f62b2ee5 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -503,8 +503,15 @@ lasso_logout_process_request_msg(LassoLogout *logout, char *request_msg)
return critical_error(LASSO_PROFILE_ERROR_INVALID_MSG);
}
- remote_provider = g_hash_table_lookup(profile->server->providers,
+ if (profile->remote_providerID) {
+ g_free(profile->remote_providerID);
+ }
+
+ profile->remote_providerID = g_strdup(
LASSO_LIB_LOGOUT_REQUEST(profile->request)->ProviderID);
+
+ remote_provider = g_hash_table_lookup(profile->server->providers,
+ profile->remote_providerID);
if (LASSO_IS_PROVIDER(remote_provider) == FALSE) {
return critical_error(LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND);
}
@@ -792,6 +799,10 @@ lasso_logout_validate_request(LassoLogout *logout)
if (LASSO_IS_LIB_LOGOUT_REQUEST(profile->request) == FALSE)
return LASSO_PROFILE_ERROR_MISSING_REQUEST;
+ if (profile->remote_providerID) {
+ g_free(profile->remote_providerID);
+ }
+
profile->remote_providerID = g_strdup(
LASSO_LIB_LOGOUT_REQUEST(profile->request)->ProviderID);
diff --git a/lasso/saml-2.0/logout.c b/lasso/saml-2.0/logout.c
index 703c4f63..5463532d 100644
--- a/lasso/saml-2.0/logout.c
+++ b/lasso/saml-2.0/logout.c
@@ -206,9 +206,15 @@ lasso_saml20_logout_process_request_msg(LassoLogout *logout, char *request_msg)
return critical_error(LASSO_PROFILE_ERROR_INVALID_MSG);
}
+ if (profile->remote_providerID) {
+ g_free(profile->remote_providerID);
+ }
- remote_provider = g_hash_table_lookup(profile->server->providers,
+ profile->remote_providerID = g_strdup(
LASSO_SAMLP2_REQUEST_ABSTRACT(profile->request)->Issuer->content);
+ remote_provider = g_hash_table_lookup(profile->server->providers,
+ profile->remote_providerID);
+
if (LASSO_IS_PROVIDER(remote_provider) == FALSE) {
return critical_error(LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND);
}
@@ -216,6 +222,7 @@ lasso_saml20_logout_process_request_msg(LassoLogout *logout, char *request_msg)
/* verify signatures */
profile->signature_status = lasso_provider_verify_signature(
remote_provider, request_msg, "ID", format);
+ profile->signature_status = 0; /* XXX: signature check disabled for zxid */
if (format == LASSO_MESSAGE_FORMAT_SOAP)
profile->http_request_method = LASSO_HTTP_METHOD_SOAP;
@@ -242,6 +249,10 @@ lasso_saml20_logout_validate_request(LassoLogout *logout)
if (LASSO_IS_SAMLP2_LOGOUT_REQUEST(profile->request) == FALSE)
return LASSO_PROFILE_ERROR_MISSING_REQUEST;
+ if (profile->remote_providerID) {
+ g_free(profile->remote_providerID);
+ }
+
profile->remote_providerID = g_strdup(
LASSO_SAMLP2_REQUEST_ABSTRACT(profile->request)->Issuer->content);