summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-11-29 19:31:32 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-11-29 19:31:32 +0000
commit2ea07eebe111fa8c02f2341af91a39bd1a955d95 (patch)
treebca369349b2ff32a92f6f3e79aa6d6c0cd5ec5ce
parent06003ba78b0b8427da64a3a71cde513ef9ab6805 (diff)
downloadlasso-2ea07eebe111fa8c02f2341af91a39bd1a955d95.tar.gz
lasso-2ea07eebe111fa8c02f2341af91a39bd1a955d95.tar.xz
lasso-2ea07eebe111fa8c02f2341af91a39bd1a955d95.zip
extra consistency check in lasso_session_get_provider_index
-rw-r--r--lasso/id-ff/session.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/lasso/id-ff/session.c b/lasso/id-ff/session.c
index 0a1ba77a..2e82b875 100644
--- a/lasso/id-ff/session.c
+++ b/lasso/id-ff/session.c
@@ -73,7 +73,6 @@ lasso_session_get_authentication_method(LassoSession *session, gchar *remote_pro
gchar*
lasso_session_get_first_providerID(LassoSession *session)
{
- /* XXX: why didn't it use get_provider_index directly ? */
return lasso_session_get_provider_index(session, 0);
}
@@ -88,15 +87,17 @@ gchar*
lasso_session_get_provider_index(LassoSession *session, gint index)
{
GList *element;
+ int length;
- if (session->private_data->providerIDs == NULL) {
- g_hash_table_foreach(session->assertions, (GHFunc)add_providerID, session);
- /* XXX? create list */
- }
+ length = g_hash_table_size(session->assertions);
- if (g_hash_table_size(session->assertions) == 0)
+ if (length == 0)
return NULL;
+ if (session->private_data->providerIDs == NULL ||
+ g_list_length(session->private_data->providerIDs) != length)
+ g_hash_table_foreach(session->assertions, (GHFunc)add_providerID, session);
+
element = g_list_nth(session->private_data->providerIDs, index);
if (element == NULL)
return NULL;