diff options
author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-07-19 15:25:16 +0000 |
---|---|---|
committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-07-19 15:25:16 +0000 |
commit | e0b9fad4806f3a3061843a0bf94f37644a8427e4 (patch) | |
tree | 9d1126d86344674e203c4c9b7d1e16d95031295f | |
parent | 98ff825722b882d74ff065826ed03e511979a644 (diff) | |
download | lasso-e0b9fad4806f3a3061843a0bf94f37644a8427e4.tar.gz lasso-e0b9fad4806f3a3061843a0bf94f37644a8427e4.tar.xz lasso-e0b9fad4806f3a3061843a0bf94f37644a8427e4.zip |
Fixed memory leaks
-rw-r--r-- | lasso/Attic/protocols/elements/authentication_statement.c | 18 | ||||
-rw-r--r-- | lasso/Attic/protocols/identity.c | 17 |
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 * |