Added somes g_free() and lasso_node_destroy() to fixe memory leaks

This commit is contained in:
Valery Febvre 2004-07-16 16:39:14 +00:00
parent 0dde5d12c4
commit f4f58e058d
5 changed files with 41 additions and 30 deletions

View File

@ -78,14 +78,14 @@ void
lasso_identity_set_local_nameIdentifier(LassoIdentity *identity,
LassoNode *nameIdentifier)
{
identity->local_nameIdentifier = nameIdentifier;
identity->local_nameIdentifier = lasso_node_copy(nameIdentifier);
}
void
lasso_identity_set_remote_nameIdentifier(LassoIdentity *identity,
LassoNode *nameIdentifier)
{
identity->remote_nameIdentifier = nameIdentifier;
identity->remote_nameIdentifier = lasso_node_copy(nameIdentifier);
}
gboolean

View File

@ -55,8 +55,9 @@ lasso_provider_dump(LassoProvider *provider)
provider_class->set_prop(provider_node, LASSO_PROVIDER_CA_CERTIFICATE_NODE, provider->ca_certificate);
provider_dump = lasso_node_export(provider_node);
//lasso_node_destroy(metadata_node);
//lasso_node_destroy(provider_node);
lasso_node_destroy(metadata_node);
lasso_node_destroy(provider_node);
return(provider_dump);
}

View File

@ -48,6 +48,7 @@ lasso_profile_context_dump(LassoProfileContext *ctx,
const gchar *name)
{
LassoNode *node;
LassoNode *request, *response;
gchar *child_dump, *dump = NULL;
node = lasso_node_new();
@ -59,10 +60,14 @@ lasso_profile_context_dump(LassoProfileContext *ctx,
}
if (ctx->request != NULL) {
LASSO_NODE_GET_CLASS(node)->add_child(node, lasso_node_copy(ctx->request), FALSE);
request = lasso_node_copy(ctx->request);
LASSO_NODE_GET_CLASS(node)->add_child(node, request, FALSE);
lasso_node_destroy(request);
}
if (ctx->response != NULL) {
LASSO_NODE_GET_CLASS(node)->add_child(node, lasso_node_copy(ctx->response), FALSE);
request = lasso_node_copy(ctx->response);
LASSO_NODE_GET_CLASS(node)->add_child(node, response, FALSE);
lasso_node_destroy(response);
}
if (ctx->remote_providerID != NULL) {
@ -87,11 +92,8 @@ gint
lasso_profile_context_set_remote_providerID(LassoProfileContext *ctx,
gchar *providerID)
{
if (ctx->remote_providerID) {
free(ctx->remote_providerID);
}
ctx->remote_providerID = (char *)malloc(strlen(providerID)+1);
strcpy(ctx->remote_providerID, providerID);
g_free(ctx->remote_providerID);
ctx->remote_providerID = g_strdup(providerID);
return (1);
}

View File

@ -167,8 +167,8 @@ lasso_server_get_providerID_from_hash(LassoServer *server,
return(providerID);
}
else{
/* xmlFree(providerID); */
/* xmlFree(hash_providerID); */
g_free(providerID);
g_free(hash_providerID);
}
}

View File

@ -78,7 +78,7 @@ lasso_user_add_identity(LassoUser *user,
g_return_val_if_fail(remote_providerID!=NULL, -2);
g_return_val_if_fail(identity!=NULL, -3);
debug(INFO, "Add an identity for %s\n", remote_providerID);
debug(DEBUG, "Add an identity for %s\n", remote_providerID);
g_hash_table_insert(user->identities, g_strdup(remote_providerID), identity);
return(0);
@ -288,47 +288,50 @@ lasso_user_new_from_dump(gchar *dump)
xmlChar *remote_providerID;
g_return_val_if_fail(dump!=NULL, NULL);
g_return_val_if_fail(dump != NULL, NULL);
/* new object */
user = LASSO_USER(g_object_new(LASSO_TYPE_USER, NULL));
/* get user */
user_node = lasso_node_new_from_dump(dump);
if(user_node==NULL){
debug(WARNING, "Can' create a user from dump\n");
return(NULL);
if (user_node == NULL) {
debug(WARNING, "Can't create a user from dump.\n");
return (NULL);
}
/* get assertions */
assertions_node = lasso_node_get_child(user_node, LASSO_USER_ASSERTIONS_NODE, NULL);
if(assertions_node){
if (assertions_node != NULL) {
assertions_class = LASSO_NODE_GET_CLASS(assertions_node);
assertions_xmlNode = assertions_class->get_xmlNode(assertions_node);
assertion_xmlNode = assertions_xmlNode->children;
while(assertion_xmlNode){
while (assertion_xmlNode != NULL) {
/* assertion xmlNode */
if(assertion_xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(assertion_xmlNode->name, LASSO_USER_ASSERTION_NODE)){
if (assertion_xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(assertion_xmlNode->name, LASSO_USER_ASSERTION_NODE)) {
/* assertion node */
assertion_node = lasso_node_new_from_xmlNode(assertion_xmlNode);
remote_providerID = lasso_node_get_attr_value(assertion_node, LASSO_USER_REMOTE_PROVIDERID_NODE);
lasso_user_add_assertion(user, remote_providerID, assertion_node);
g_free(remote_providerID);
lasso_node_destroy(assertion_node);
}
assertion_xmlNode = assertion_xmlNode->next;
}
}
lasso_node_destroy(assertions_node);
/* identities*/
identities_node = lasso_node_get_child(user_node, LASSO_USER_IDENTITIES_NODE, NULL);
if(identities_node){
if (identities_node != NULL) {
identities_class = LASSO_NODE_GET_CLASS(identities_node);
identities_xmlNode = identities_class->get_xmlNode(identities_node);
identity_xmlNode = identities_xmlNode->children;
while(identity_xmlNode){
if(identity_xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(identity_xmlNode->name, LASSO_USER_IDENTITY_NODE)){
while (identity_xmlNode != NULL) {
if (identity_xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(identity_xmlNode->name, LASSO_USER_IDENTITY_NODE)) {
identity_node = lasso_node_new_from_xmlNode(identity_xmlNode);
remote_providerID = lasso_node_get_attr_value(identity_node, LASSO_IDENTITY_REMOTE_PROVIDERID_NODE);
@ -337,30 +340,35 @@ lasso_user_new_from_dump(gchar *dump)
/* local name identifier */
local_nameIdentifier_node = lasso_node_get_child(identity_node, LASSO_IDENTITY_LOCAL_NAME_IDENTIFIER_NODE, NULL);
if(local_nameIdentifier_node){
if (local_nameIdentifier_node != NULL) {
nameIdentifier_node = lasso_node_get_child(local_nameIdentifier_node, "NameIdentifier", NULL);
lasso_identity_set_local_nameIdentifier(identity, nameIdentifier_node);
lasso_node_destroy(nameIdentifier_node);
lasso_node_destroy(local_nameIdentifier_node);
}
/* remote name identifier */
remote_nameIdentifier_node = lasso_node_get_child(identity_node, LASSO_IDENTITY_REMOTE_NAME_IDENTIFIER_NODE, NULL);
if(remote_nameIdentifier_node){
if (remote_nameIdentifier_node != NULL) {
nameIdentifier_node = lasso_node_get_child(remote_nameIdentifier_node, "NameIdentifier", NULL);
lasso_identity_set_remote_nameIdentifier(identity, nameIdentifier_node);
lasso_node_destroy(nameIdentifier_node);
lasso_node_destroy(remote_nameIdentifier_node);
}
lasso_user_add_identity(user, remote_providerID, identity);
//lasso_node_destroy(identity_node);
g_free(remote_providerID);
lasso_node_destroy(identity_node);
}
identity_xmlNode = identity_xmlNode->next;
}
//lasso_node_destroy(identities_node);
lasso_node_destroy(identities_node);
}
//lasso_node_destroy(user_node);
lasso_node_destroy(user_node);
return(user);
return (user);
}