summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2005-01-04 15:40:37 +0000
committerFrederic Peters <fpeters@entrouvert.com>2005-01-04 15:40:37 +0000
commit174c7ed696fbc4daa297c8019fcaa11a3c84d840 (patch)
treec20f38f7f4c6c537fc26c23cf41ed246c0d1ea16
parent83e79511d94c5c75a7bc3fe6f17c897089803865 (diff)
downloadlasso-174c7ed696fbc4daa297c8019fcaa11a3c84d840.tar.gz
lasso-174c7ed696fbc4daa297c8019fcaa11a3c84d840.tar.xz
lasso-174c7ed696fbc4daa297c8019fcaa11a3c84d840.zip
clean some state and uri escape artifact
-rw-r--r--lasso/id-ff/login.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index 76bea661..75c0f486 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -479,14 +479,15 @@ lasso_login_build_artifact_msg(LassoLogin *login, LassoHttpMethod http_method)
relayState = xmlURIEscapeStr(LASSO_LIB_AUTHN_REQUEST(profile->request)->RelayState, NULL);
if (http_method == LASSO_HTTP_METHOD_REDIRECT) {
+ xmlChar *escaped_artifact = xmlURIEscapeStr(b64_samlArt, NULL);
if (relayState == NULL) {
- profile->msg_url = g_strdup_printf(
- "%s?SAMLart=%s", url, b64_samlArt);
+ profile->msg_url = g_strdup_printf("%s?SAMLart=%s", url, escaped_artifact);
} else {
profile->msg_url = g_strdup_printf(
"%s?SAMLart=%s&RelayState=%s",
- url, b64_samlArt, relayState);
+ url, escaped_artifact, relayState);
}
+ xmlFree(escaped_artifact);
}
if (http_method == LASSO_HTTP_METHOD_POST) {
@@ -816,6 +817,12 @@ lasso_login_init_authn_request(LassoLogin *login, const gchar *remote_providerID
profile = LASSO_PROFILE(login);
+ /* clean state */
+ if (profile->remote_providerID)
+ g_free(profile->remote_providerID);
+ if (profile->request)
+ lasso_node_destroy(LASSO_NODE(profile->request));
+
if (remote_providerID != NULL) {
profile->remote_providerID = g_strdup(remote_providerID);
} else {
@@ -1142,6 +1149,9 @@ lasso_login_process_authn_response_msg(LassoLogin *login, gchar *authn_response_
g_return_val_if_fail(LASSO_IS_LOGIN(login), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
g_return_val_if_fail(authn_response_msg != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
+ /* clean state */
+ if (LASSO_PROFILE(login)->remote_providerID)
+ g_free(LASSO_PROFILE(login)->remote_providerID);
if (LASSO_PROFILE(login)->response)
lasso_node_destroy(LASSO_NODE(LASSO_PROFILE(login)->response));