diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-08-31 10:09:51 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-08-31 10:09:51 +0000 |
| commit | 10a1215399f6d4f251cb3d403f3726cb9fee5c8d (patch) | |
| tree | 346b229d19a8bccf6fdfbbc8fdcd226bbb59f083 | |
| parent | 48a7129ed97a4fdd550deed1e2870116dec57790 (diff) | |
| download | lasso-10a1215399f6d4f251cb3d403f3726cb9fee5c8d.tar.gz lasso-10a1215399f6d4f251cb3d403f3726cb9fee5c8d.tar.xz lasso-10a1215399f6d4f251cb3d403f3726cb9fee5c8d.zip | |
Fixed missing feature in lasso_process_request_msg() and lasso_logout_process_response() : now if the parse of the query message is wron, then it returns LASSO_PROFILE_ERROR_INVALID_QUERY code error
| -rw-r--r-- | lasso/id-ff/logout.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index b3130359..3e5b6538 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -612,27 +612,21 @@ gint lasso_logout_process_request_msg(LassoLogout *logout, } break; case lassoHttpMethodRedirect: - debug("Build a logout request from query msg\n"); profile->request = lasso_logout_request_new_from_export(request_msg, lassoNodeExportTypeQuery); - - /* verify the message is a LogoutRequest */ + /* if problem while rebuilding the response, then return invalid query code error */ if (LASSO_IS_LOGOUT_REQUEST(profile->request) == FALSE) { - message(G_LOG_LEVEL_CRITICAL, "Message is not a LogoutRequest\n"); - ret = -1; + ret = LASSO_PROFILE_ERROR_INVALID_QUERY; goto done; } break; - case lassoHttpMethodGet: - debug("TODO, implement the get method\n"); - break; default: message(G_LOG_LEVEL_CRITICAL, "Invalid request method\n"); ret = -1; goto done; } - if(profile->request == NULL) { + if(LASSO_IS_LOGOUT_REQUEST(profile->request) == FALSE) { message(G_LOG_LEVEL_CRITICAL, "Error while building the request from msg\n"); ret = -1; goto done; @@ -694,6 +688,11 @@ lasso_logout_process_response_msg(LassoLogout *logout, break; case lassoHttpMethodRedirect: profile->response = lasso_logout_response_new_from_export(response_msg, lassoNodeExportTypeQuery); + /* if problem while rebuilding the response, then return invalid query code error */ + if (LASSO_IS_LOGOUT_RESPONSE(profile->response) == FALSE) { + ret = LASSO_PROFILE_ERROR_INVALID_QUERY; + goto done; + } break; default: message(G_LOG_LEVEL_CRITICAL, "Invalid response method\n"); @@ -706,13 +705,13 @@ lasso_logout_process_response_msg(LassoLogout *logout, goto done; } + /* get the status code */ statusCode = lasso_node_get_child(profile->response, "StatusCode", NULL, NULL); if (statusCode == NULL) { message(G_LOG_LEVEL_CRITICAL, "StatusCode node not found\n"); ret = -1; goto done; } - statusCodeValue = lasso_node_get_attr_value(statusCode, "Value", NULL); if (!xmlStrEqual(statusCodeValue, lassoSamlStatusCodeSuccess)) { |
