diff options
author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-04-22 00:45:02 +0000 |
---|---|---|
committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-04-22 00:45:02 +0000 |
commit | 0e8441afe3f152236ab323cfb8fc3c5daf10d718 (patch) | |
tree | 976820a72a20daf67a5cff327e3fc3d4b0a48366 | |
parent | 2f5ef5fef00b3762deb8f5963406484cb145d0a2 (diff) | |
download | lasso-0e8441afe3f152236ab323cfb8fc3c5daf10d718.tar.gz lasso-0e8441afe3f152236ab323cfb8fc3c5daf10d718.tar.xz lasso-0e8441afe3f152236ab323cfb8fc3c5daf10d718.zip |
Improve safety by replacing all g_hash_table_destroy use by lasso_release_ghashtable
-rw-r--r-- | lasso/id-ff/provider.c | 5 | ||||
-rw-r--r-- | lasso/id-ff/server.c | 12 | ||||
-rw-r--r-- | lasso/id-ff/session.c | 17 | ||||
-rw-r--r-- | lasso/id-wsf-2.0/data_service.c | 5 | ||||
-rw-r--r-- | lasso/registry.c | 9 | ||||
-rw-r--r-- | lasso/utils.h | 2 | ||||
-rw-r--r-- | lasso/xml/xml.c | 4 |
7 files changed, 18 insertions, 36 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c index 73410f05..01eb74b0 100644 --- a/lasso/id-ff/provider.c +++ b/lasso/id-ff/provider.c @@ -760,10 +760,7 @@ dispose(GObject *object) } provider->private_data->dispose_has_run = TRUE; - if (provider->private_data->Descriptors) { - g_hash_table_destroy(provider->private_data->Descriptors); - } - provider->private_data->Descriptors = NULL; + lasso_release_ghashtable(provider->private_data->Descriptors); if (provider->private_data->organization) { xmlFreeNode(provider->private_data->organization); diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c index 84613f63..6d646557 100644 --- a/lasso/id-ff/server.c +++ b/lasso/id-ff/server.c @@ -449,7 +449,7 @@ dispose(GObject *object) { LassoServer *server = LASSO_SERVER(object); - if (server->private_data->dispose_has_run == TRUE) { + if (! server->private_data || server->private_data->dispose_has_run == TRUE) { return; } server->private_data->dispose_has_run = TRUE; @@ -458,17 +458,11 @@ dispose(GObject *object) lasso_release_list_of_gobjects(server->private_data->svc_metadatas); - if (server->services) { - g_hash_table_destroy(server->services); - server->services = NULL; - } + lasso_release_ghashtable(server->services); /* free allocated memory for hash tables */ lasso_mem_debug("LassoServer", "Providers", server->providers); - if (server->providers) { - g_hash_table_destroy(server->providers); - server->providers = NULL; - } + lasso_release_ghashtable(server->providers); G_OBJECT_CLASS(parent_class)->dispose(G_OBJECT(server)); } diff --git a/lasso/id-ff/session.c b/lasso/id-ff/session.c index 467492d8..e5d491f5 100644 --- a/lasso/id-ff/session.c +++ b/lasso/id-ff/session.c @@ -626,24 +626,17 @@ dispose(GObject *object) { LassoSession *session = LASSO_SESSION(object); - if (session->private_data->dispose_has_run == TRUE) + if (! session->private_data || session->private_data->dispose_has_run == TRUE) return; session->private_data->dispose_has_run = TRUE; - g_hash_table_destroy(session->assertions); - session->assertions = NULL; - - g_hash_table_destroy(session->private_data->status); - session->private_data->status = NULL; - + lasso_release_ghashtable(session->assertions); + lasso_release_ghashtable(session->private_data->status); lasso_release_list_of_strings(session->private_data->providerIDs); - - g_hash_table_destroy(session->private_data->assertions_by_id); - session->private_data->assertions_by_id = NULL; + lasso_release_ghashtable(session->private_data->assertions_by_id); #ifdef LASSO_WSF_ENABLED - g_hash_table_destroy(session->private_data->eprs); - session->private_data->eprs = NULL; + lasso_release_ghashtable(session->private_data->eprs); #endif G_OBJECT_CLASS(parent_class)->dispose(object); diff --git a/lasso/id-wsf-2.0/data_service.c b/lasso/id-wsf-2.0/data_service.c index 38dda51c..90bfd571 100644 --- a/lasso/id-wsf-2.0/data_service.c +++ b/lasso/id-wsf-2.0/data_service.c @@ -83,6 +83,7 @@ lasso_idwsf2_data_service_clean_private_data(LassoIdWsf2DataService *service) lasso_release_string(pdata->service_type_prefix); lasso_release_list_of_gobjects(pdata->query_items); lasso_release_list_of_gobjects(pdata->modify_items); + lasso_release_ghashtable(pdata->namespaces); } @@ -977,13 +978,11 @@ dispose(GObject *object) LassoIdWsf2DataService *service = LASSO_IDWSF2_DATA_SERVICE(object); LassoIdWsf2DataServicePrivate *pdata = service->private_data; - if (pdata->dispose_has_run == TRUE) + if (!pdata || pdata->dispose_has_run == TRUE) return; pdata->dispose_has_run = TRUE; lasso_idwsf2_data_service_clean_private_data(service); - g_hash_table_destroy(pdata->namespaces); - pdata->namespaces = NULL; G_OBJECT_CLASS(parent_class)->dispose(object); } diff --git a/lasso/registry.c b/lasso/registry.c index f7f27575..9b3f338c 100644 --- a/lasso/registry.c +++ b/lasso/registry.c @@ -23,8 +23,9 @@ */ #include <glib.h> -#include "registry-private.h" +#include "./registry-private.h" #include "./errors.h" +#include "./utils.h" /** @@ -183,10 +184,8 @@ void lasso_registry_destroy(LassoRegistry *registry) { g_return_if_fail(registry); - g_hash_table_destroy(registry->direct_mapping); - registry->direct_mapping = NULL; - g_hash_table_destroy(registry->functional_mapping); - registry->functional_mapping = NULL; + lasso_release_ghashtable(registry->direct_mapping); + lasso_release_ghashtable(registry->functional_mapping); lasso_release(registry); } diff --git a/lasso/utils.h b/lasso/utils.h index 8eb744f1..577a3ab5 100644 --- a/lasso/utils.h +++ b/lasso/utils.h @@ -173,7 +173,7 @@ lasso_release_full2(dest, xmlSecKeyDestroy, xmlSecKeyPtr) #define lasso_release_ghashtable(dest) \ - lasso_release_full2(dest, g_hash_table_destroy, GHashTable*) + lasso_release_full(dest, g_hash_table_destroy) #define lasso_release_gstring(dest, b) \ { \ diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c index 75f79ae0..851a4336 100644 --- a/lasso/xml/xml.c +++ b/lasso/xml/xml.c @@ -1497,7 +1497,7 @@ lasso_node_dispose(GObject *object) case SNIPPET_ATTRIBUTE: { if (snippet->type & SNIPPET_ANY) { if (*value) { - g_hash_table_destroy(*value); + lasso_release_ghashtable(*value); } } else { lasso_release_string(*(char**)value); @@ -1507,7 +1507,7 @@ lasso_node_dispose(GObject *object) break; /* no real element here */ case SNIPPET_COLLECT_NAMESPACES: if (*value) { - g_hash_table_destroy(*value); + lasso_release_ghashtable(*value); } break; default: |