summaryrefslogtreecommitdiffstats
path: root/lasso
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2008-03-03 16:26:54 +0000
committerFrederic Peters <fpeters@entrouvert.com>2008-03-03 16:26:54 +0000
commiteca6a8814ecb76ca6d17cececac1dbd3cd350fe4 (patch)
tree3ac32be6f5675aeeb7fa62e9d3a76e46ff66ec9f /lasso
parent1d182718f43d5e085a7e40a323273a86f234e6c9 (diff)
downloadlasso-eca6a8814ecb76ca6d17cececac1dbd3cd350fe4.tar.gz
lasso-eca6a8814ecb76ca6d17cececac1dbd3cd350fe4.tar.xz
lasso-eca6a8814ecb76ca6d17cececac1dbd3cd350fe4.zip
only get session when remote provider id is not provided
Diffstat (limited to 'lasso')
-rw-r--r--lasso/saml-2.0/name_id_management.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/lasso/saml-2.0/name_id_management.c b/lasso/saml-2.0/name_id_management.c
index b6a097a4..5073eb9a 100644
--- a/lasso/saml-2.0/name_id_management.c
+++ b/lasso/saml-2.0/name_id_management.c
@@ -58,8 +58,8 @@ lasso_name_id_management_init_request(LassoNameIdManagement *name_id_management,
LassoFederation *federation;
LassoSaml2NameID *name_id, *name_id_n;
LassoSamlp2RequestAbstract *request;
- LassoSession *session;
- LassoNode *oldNameIdentifier;
+ LassoSession *session = NULL;
+ LassoNode *oldNameIdentifier;
g_return_val_if_fail(LASSO_IS_NAME_ID_MANAGEMENT(name_id_management),
LASSO_PARAM_ERROR_INVALID_VALUE);
@@ -71,15 +71,14 @@ lasso_name_id_management_init_request(LassoNameIdManagement *name_id_management,
return critical_error(LASSO_PROFILE_ERROR_IDENTITY_NOT_FOUND);
}
- /* verify if session exists */
- session = lasso_profile_get_session(profile);
- if (session == NULL) {
- return critical_error(LASSO_PROFILE_ERROR_SESSION_NOT_FOUND);
- }
-
/* set the remote provider id */
- g_free (profile->remote_providerID);
+ g_free (profile->remote_providerID);
if (remote_provider_id == NULL) {
+ /* verify if session exists */
+ session = lasso_profile_get_session(profile);
+ if (session == NULL) {
+ return critical_error(LASSO_PROFILE_ERROR_SESSION_NOT_FOUND);
+ }
profile->remote_providerID = lasso_session_get_provider_index(session, 0);
} else {
profile->remote_providerID = g_strdup(remote_provider_id);
@@ -101,14 +100,14 @@ lasso_name_id_management_init_request(LassoNameIdManagement *name_id_management,
/* get the current NameID */
name_id_n = LASSO_SAML2_NAME_ID(lasso_profile_get_nameIdentifier(profile));
name_id = LASSO_SAML2_NAME_ID(name_id_n);
- oldNameIdentifier = profile->nameIdentifier;
+ oldNameIdentifier = profile->nameIdentifier;
if (federation->local_nameIdentifier) {
profile->nameIdentifier = g_object_ref(federation->local_nameIdentifier);
} else {
profile->nameIdentifier = g_object_ref(name_id_n);
}
- if (oldNameIdentifier != NULL)
- g_object_unref(oldNameIdentifier);
+ if (oldNameIdentifier != NULL)
+ g_object_unref(oldNameIdentifier);
/* XXX: check HTTP method is supported */