diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2014-06-08 11:56:54 +0200 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2014-06-08 12:13:30 +0200 |
| commit | 49a6e9a9833b1a6ee60e8abd850e1c378db65635 (patch) | |
| tree | b62e99fba666f3ad303bfbcaa0688b6c719d60fd /lasso | |
| parent | e25968a9fdc9a225ac9bd3b9cc1efa0f2dfcc5bb (diff) | |
| download | lasso-49a6e9a9833b1a6ee60e8abd850e1c378db65635.tar.gz lasso-49a6e9a9833b1a6ee60e8abd850e1c378db65635.tar.xz lasso-49a6e9a9833b1a6ee60e8abd850e1c378db65635.zip | |
xml/samlp2_logout_request: fix leaks around session indexes
Diffstat (limited to 'lasso')
| -rw-r--r-- | lasso/id-ff/session.c | 1 | ||||
| -rw-r--r-- | lasso/xml/saml-2.0/samlp2_logout_request.c | 16 |
2 files changed, 15 insertions, 2 deletions
diff --git a/lasso/id-ff/session.c b/lasso/id-ff/session.c index 1b1688fc..4cb3e2b8 100644 --- a/lasso/id-ff/session.c +++ b/lasso/id-ff/session.c @@ -882,6 +882,7 @@ cleanup: lasso_release_xml_string(session_index); lasso_release_xml_string(provider_id); lasso_release_xml_string(assertion_id); + lasso_release_gobject(name_id); } static int diff --git a/lasso/xml/saml-2.0/samlp2_logout_request.c b/lasso/xml/saml-2.0/samlp2_logout_request.c index 4f374a89..034d63de 100644 --- a/lasso/xml/saml-2.0/samlp2_logout_request.c +++ b/lasso/xml/saml-2.0/samlp2_logout_request.c @@ -90,6 +90,17 @@ static LassoNodeClass *parent_class = NULL; #define GET_PRIVATE(x) G_TYPE_INSTANCE_GET_PRIVATE(x, \ LASSO_TYPE_SAMLP2_LOGOUT_REQUEST, LassoSamlp2LogoutRequestPrivate) +static void +dispose(GObject *object) +{ + LassoSamlp2LogoutRequest *logout_request = LASSO_SAMLP2_LOGOUT_REQUEST(object); + LassoSamlp2LogoutRequestPrivate *pv; + + pv = GET_PRIVATE(logout_request); + lasso_release_list_of_strings(pv->SessionIndex); + G_OBJECT_CLASS(parent_class)->dispose(G_OBJECT(logout_request)); +} + /*****************************************************************************/ /* instance and class init functions */ /*****************************************************************************/ @@ -183,6 +194,7 @@ class_init(LassoSamlp2LogoutRequestClass *klass) lasso_node_class_set_ns(nclass, LASSO_SAML2_PROTOCOL_HREF, LASSO_SAML2_PROTOCOL_PREFIX); lasso_node_class_add_snippets(nclass, schema_snippets); g_type_class_add_private(G_OBJECT_CLASS(klass), sizeof(LassoSamlp2LogoutRequestPrivate)); + G_OBJECT_CLASS(klass)->dispose = dispose; } GType @@ -231,7 +243,7 @@ lasso_samlp2_logout_request_get_session_indexes(LassoSamlp2LogoutRequest *logout pv = GET_PRIVATE(logout_request); lasso_assign_list_of_strings(ret, pv->SessionIndex); if (logout_request->SessionIndex) { - ret = g_list_append(ret, g_strdup(logout_request->SessionIndex)); + ret = g_list_prepend(ret, g_strdup(logout_request->SessionIndex)); } return ret; } @@ -261,7 +273,7 @@ lasso_samlp2_logout_request_set_session_indexes(LassoSamlp2LogoutRequest *logout if (pv->SessionIndex && pv->SessionIndex->next) { GList *last = g_list_last(pv->SessionIndex); lasso_assign_new_string(logout_request->SessionIndex, (char*) last->data); - pv->SessionIndex = g_list_remove_link(pv->SessionIndex, last); + pv->SessionIndex = g_list_delete_link(pv->SessionIndex, last); } } |
