summaryrefslogtreecommitdiffstats
path: root/lasso/id-ff/logout.c
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2005-08-09 14:13:33 +0000
committerFrederic Peters <fpeters@entrouvert.com>2005-08-09 14:13:33 +0000
commit9d1fea3e356b5f2f086df2cca27169beb898335e (patch)
treebc5d7308195a556b1f5af7ded2068827f42fdbf7 /lasso/id-ff/logout.c
parent830e11754a6bd75814194a27a0c654d2655c705d (diff)
downloadlasso-9d1fea3e356b5f2f086df2cca27169beb898335e.tar.gz
lasso-9d1fea3e356b5f2f086df2cca27169beb898335e.tar.xz
lasso-9d1fea3e356b5f2f086df2cca27169beb898335e.zip
handle the case where logout request is done while there are no session; that
means direct call to build_response_msg, creating a status: requestdenied.
Diffstat (limited to 'lasso/id-ff/logout.c')
-rw-r--r--lasso/id-ff/logout.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 0ef4532e..8c5d36ad 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -166,6 +166,29 @@ lasso_logout_build_response_msg(LassoLogout *logout)
return critical_error(LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND);
}
+ if (profile->response == NULL) {
+ /* no answer, this means this function got called before
+ * validate_request, probably because there were no active
+ * session */
+ if (profile->http_request_method == LASSO_HTTP_METHOD_SOAP) {
+ profile->response = lasso_lib_logout_response_new_full(
+ LASSO_PROVIDER(profile->server)->ProviderID,
+ LASSO_SAML_STATUS_CODE_REQUEST_DENIED,
+ LASSO_LIB_LOGOUT_REQUEST(profile->request),
+ profile->server->certificate ?
+ LASSO_SIGNATURE_TYPE_WITHX509 : LASSO_SIGNATURE_TYPE_SIMPLE,
+ LASSO_SIGNATURE_METHOD_RSA_SHA1);
+ }
+ if (profile->http_request_method == LASSO_HTTP_METHOD_REDIRECT) {
+ profile->response = lasso_lib_logout_response_new_full(
+ LASSO_PROVIDER(profile->server)->ProviderID,
+ LASSO_SAML_STATUS_CODE_REQUEST_DENIED,
+ LASSO_LIB_LOGOUT_REQUEST(profile->request),
+ LASSO_SIGNATURE_TYPE_NONE,
+ 0);
+ }
+ }
+
/* build logout response message */
if (profile->http_request_method == LASSO_HTTP_METHOD_SOAP) {
profile->msg_url = NULL;