summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-07-19 15:25:16 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-07-19 15:25:16 +0000
commite0b9fad4806f3a3061843a0bf94f37644a8427e4 (patch)
tree9d1126d86344674e203c4c9b7d1e16d95031295f
parent98ff825722b882d74ff065826ed03e511979a644 (diff)
downloadlasso-e0b9fad4806f3a3061843a0bf94f37644a8427e4.tar.gz
lasso-e0b9fad4806f3a3061843a0bf94f37644a8427e4.tar.xz
lasso-e0b9fad4806f3a3061843a0bf94f37644a8427e4.zip
Fixed memory leaks
-rw-r--r--lasso/Attic/protocols/elements/authentication_statement.c18
-rw-r--r--lasso/Attic/protocols/identity.c17
2 files changed, 27 insertions, 8 deletions
diff --git a/lasso/Attic/protocols/elements/authentication_statement.c b/lasso/Attic/protocols/elements/authentication_statement.c
index b95f145e..7c1a06cf 100644
--- a/lasso/Attic/protocols/elements/authentication_statement.c
+++ b/lasso/Attic/protocols/elements/authentication_statement.c
@@ -75,6 +75,7 @@ lasso_authentication_statement_new(const xmlChar *authenticationMethod
g_return_val_if_fail(idp_identifier != NULL, NULL);
LassoNode *statement;
+ LassoNode *new_identifier, *new_idp_identifier;
LassoNode *subject, *subject_confirmation;
gchar *str;
xmlChar *time;
@@ -94,23 +95,30 @@ lasso_authentication_statement_new(const xmlChar *authenticationMethod
if (identifier == NULL) {
/* create a new NameIdentifier and use idp_identifier datas to fill it */
str = lasso_node_get_content(LASSO_NODE(idp_identifier));
- identifier = lasso_saml_name_identifier_new(str);
+ new_identifier = lasso_saml_name_identifier_new(str);
xmlFree(str);
str = lasso_node_get_attr_value(LASSO_NODE(idp_identifier), "NameQualifier");
if (str != NULL) {
- lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(identifier), str);
+ lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(new_identifier), str);
xmlFree(str);
}
str = lasso_node_get_attr_value(LASSO_NODE(idp_identifier), "Format");
if (str != NULL) {
- lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(identifier), str);
+ lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(new_identifier), str);
xmlFree(str);
}
}
+ else {
+ new_identifier = lasso_node_copy(LASSO_NODE(identifier));
+ }
+ new_idp_identifier = lasso_node_copy(LASSO_NODE(idp_identifier));
+
lasso_saml_subject_set_nameIdentifier(LASSO_SAML_SUBJECT(subject),
- LASSO_SAML_NAME_IDENTIFIER(identifier));
+ LASSO_SAML_NAME_IDENTIFIER(new_identifier));
+ lasso_node_destroy(new_identifier);
lasso_lib_subject_set_idpProvidedNameIdentifier(LASSO_LIB_SUBJECT(subject),
- LASSO_LIB_IDP_PROVIDED_NAME_IDENTIFIER(idp_identifier));
+ LASSO_LIB_IDP_PROVIDED_NAME_IDENTIFIER(new_idp_identifier));
+ lasso_node_destroy(new_idp_identifier);
subject_confirmation = lasso_saml_subject_confirmation_new();
lasso_saml_subject_confirmation_set_subjectConfirmationMethod(LASSO_SAML_SUBJECT_CONFIRMATION(subject_confirmation),
diff --git a/lasso/Attic/protocols/identity.c b/lasso/Attic/protocols/identity.c
index 380b8fff..f0f7861b 100644
--- a/lasso/Attic/protocols/identity.c
+++ b/lasso/Attic/protocols/identity.c
@@ -32,7 +32,9 @@ xmlChar *
lasso_identity_dump(LassoIdentity *identity)
{
LassoNode *identity_node, *nameIdentifier;
+ LassoNode *local_nameIdentifier, *remote_nameIdentifier;
LassoNodeClass *identity_class, *class;
+ gchar *dump;
identity_node = lasso_node_new();
identity_class = LASSO_NODE_GET_CLASS(identity_node);
@@ -46,8 +48,11 @@ lasso_identity_dump(LassoIdentity *identity)
nameIdentifier = lasso_node_new();
class = LASSO_NODE_GET_CLASS(nameIdentifier);
class->set_name(nameIdentifier, LASSO_IDENTITY_REMOTE_NAME_IDENTIFIER_NODE);
- class->add_child(nameIdentifier, LASSO_NODE(identity->remote_nameIdentifier), FALSE);
+ remote_nameIdentifier = lasso_node_copy(identity->remote_nameIdentifier);
+ class->add_child(nameIdentifier, remote_nameIdentifier, FALSE);
+ lasso_node_destroy(remote_nameIdentifier);
identity_class->add_child(identity_node, nameIdentifier, FALSE);
+ lasso_node_destroy(nameIdentifier);
}
/* add the local name identifier */
@@ -55,11 +60,17 @@ lasso_identity_dump(LassoIdentity *identity)
nameIdentifier = lasso_node_new();
class = LASSO_NODE_GET_CLASS(nameIdentifier);
class->set_name(nameIdentifier, LASSO_IDENTITY_LOCAL_NAME_IDENTIFIER_NODE);
- class->add_child(nameIdentifier, LASSO_NODE(identity->local_nameIdentifier), FALSE);
+ local_nameIdentifier = lasso_node_copy(identity->local_nameIdentifier);
+ class->add_child(nameIdentifier, local_nameIdentifier, FALSE);
+ lasso_node_destroy(local_nameIdentifier);
identity_class->add_child(identity_node, nameIdentifier, FALSE);
+ lasso_node_destroy(nameIdentifier);
}
- return(lasso_node_export(identity_node));
+ dump = lasso_node_export(identity_node);
+ lasso_node_destroy(identity_node);
+
+ return(dump);
}
LassoNode *