summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-04-22 00:45:02 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-04-22 00:45:02 +0000
commit0e8441afe3f152236ab323cfb8fc3c5daf10d718 (patch)
tree976820a72a20daf67a5cff327e3fc3d4b0a48366
parent2f5ef5fef00b3762deb8f5963406484cb145d0a2 (diff)
downloadlasso-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.c5
-rw-r--r--lasso/id-ff/server.c12
-rw-r--r--lasso/id-ff/session.c17
-rw-r--r--lasso/id-wsf-2.0/data_service.c5
-rw-r--r--lasso/registry.c9
-rw-r--r--lasso/utils.h2
-rw-r--r--lasso/xml/xml.c4
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: