summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/id-ff/login.c1
-rw-r--r--lasso/id-ff/logout.c1
-rw-r--r--lasso/id-ff/name_registration.c1
-rw-r--r--lasso/id-ff/provider.c1
-rw-r--r--lasso/id-ff/server.c1
-rw-r--r--lasso/id-wsf/data_service.c2
-rw-r--r--lasso/id-wsf/wsf_profile.c7
-rw-r--r--lasso/saml-2.0/name_id_management.c1
8 files changed, 13 insertions, 2 deletions
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index ac33b14f..5169ae04 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -2029,6 +2029,7 @@ lasso_login_new_from_dump(LassoServer *server, const gchar *dump)
doc = xmlParseMemory(dump, strlen(dump));
init_from_xml(LASSO_NODE(login), xmlDocGetRootElement(doc));
LASSO_PROFILE(login)->server = g_object_ref(server);
+ xmlFreeDoc(doc);
return login;
}
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 006bb3a4..0de3942e 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -1132,6 +1132,7 @@ lasso_logout_new_from_dump(LassoServer *server, const char *dump)
logout = lasso_logout_new(g_object_ref(server));
doc = xmlParseMemory(dump, strlen(dump));
init_from_xml(LASSO_NODE(logout), xmlDocGetRootElement(doc));
+ xmlFreeDoc(doc);
return logout;
}
diff --git a/lasso/id-ff/name_registration.c b/lasso/id-ff/name_registration.c
index 7510cb46..75acbb6b 100644
--- a/lasso/id-ff/name_registration.c
+++ b/lasso/id-ff/name_registration.c
@@ -751,6 +751,7 @@ lasso_name_registration_new_from_dump(LassoServer *server, const char *dump)
name_registration = lasso_name_registration_new(server);
doc = xmlParseMemory(dump, strlen(dump));
init_from_xml(LASSO_NODE(name_registration), xmlDocGetRootElement(doc));
+ xmlFreeDoc(doc);
return name_registration;
}
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c
index e012917f..b3ad0e17 100644
--- a/lasso/id-ff/provider.c
+++ b/lasso/id-ff/provider.c
@@ -897,6 +897,7 @@ lasso_provider_new_from_dump(const gchar *dump)
provider = g_object_new(LASSO_TYPE_PROVIDER, NULL);
doc = xmlParseMemory(dump, strlen(dump));
init_from_xml(LASSO_NODE(provider), xmlDocGetRootElement(doc));
+ xmlFreeDoc(doc);
lasso_provider_load_public_key(provider, LASSO_PUBLIC_KEY_SIGNING);
lasso_provider_load_public_key(provider, LASSO_PUBLIC_KEY_ENCRYPTION);
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c
index fc0d2735..6895756e 100644
--- a/lasso/id-ff/server.c
+++ b/lasso/id-ff/server.c
@@ -176,6 +176,7 @@ lasso_server_load_affiliation(LassoServer *server, const gchar *filename)
node = xmlDocGetRootElement(doc);
if (node == NULL || node->ns == NULL) {
+ xmlFreeDoc(doc);
return LASSO_XML_ERROR_NODE_NOT_FOUND;
}
diff --git a/lasso/id-wsf/data_service.c b/lasso/id-wsf/data_service.c
index f4c07fd6..6d400ef8 100644
--- a/lasso/id-wsf/data_service.c
+++ b/lasso/id-wsf/data_service.c
@@ -340,6 +340,8 @@ lasso_data_service_process_query_msg(LassoDataService *service, const char *mess
node_list; node_list = g_list_next(node_list)) {
LassoNode *node = node_list->data;
if (LASSO_IS_SOAP_BINDING_PROVIDER(node)) {
+ if (service->provider_id)
+ g_free(service->provider_id);
service->provider_id = g_strdup(
LASSO_SOAP_BINDING_PROVIDER(node)->providerID);
}
diff --git a/lasso/id-wsf/wsf_profile.c b/lasso/id-wsf/wsf_profile.c
index 6e07d934..2f17d933 100644
--- a/lasso/id-wsf/wsf_profile.c
+++ b/lasso/id-wsf/wsf_profile.c
@@ -1275,7 +1275,6 @@ lasso_wsf_profile_process_soap_request_msg(LassoWsfProfile *profile, const gchar
}
doc = xmlParseMemory(message, strlen(message));
- /* FIXME: doc will never be freed */
/* Verify authentication mecanisms */
if (lasso_wsf_profile_has_x509_authentication(profile) == TRUE) {
@@ -1288,8 +1287,10 @@ lasso_wsf_profile_process_soap_request_msg(LassoWsfProfile *profile, const gchar
if (res > 0) {
fault = lasso_soap_fault_new();
fault->faultstring = g_strdup("Invalid signature");
- } else if (res < 0)
+ } else if (res < 0) {
+ xmlFreeDoc(doc);
return res;
+ }
/* FIXME: Remove Signature element if exists, it seg fault when a call to
lasso_node_new_from_xmlNode() */
@@ -1322,6 +1323,8 @@ lasso_wsf_profile_process_soap_request_msg(LassoWsfProfile *profile, const gchar
profile->private_data->fault = fault;
}
+ xmlFreeDoc(doc);
+
return res;
}
diff --git a/lasso/saml-2.0/name_id_management.c b/lasso/saml-2.0/name_id_management.c
index 43cb2966..63fc6b48 100644
--- a/lasso/saml-2.0/name_id_management.c
+++ b/lasso/saml-2.0/name_id_management.c
@@ -725,6 +725,7 @@ lasso_name_id_management_new_from_dump(LassoServer *server, const char *dump)
name_id_management = lasso_name_id_management_new(g_object_ref(server));
doc = xmlParseMemory(dump, strlen(dump));
init_from_xml(LASSO_NODE(name_id_management), xmlDocGetRootElement(doc));
+ xmlFreeDoc(doc);
return name_id_management;
}