diff options
author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-05-25 13:02:32 +0000 |
---|---|---|
committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-05-25 13:02:32 +0000 |
commit | 07292d1f5b0640d117e387576339fff6a6bbb7ed (patch) | |
tree | ba01f28bf5a6602614819fc6582d3cd4eac03443 /lasso/Attic | |
parent | c8f3a247680258ddc77513e63b9a6436f67a10a8 (diff) | |
download | lasso-07292d1f5b0640d117e387576339fff6a6bbb7ed.tar.gz lasso-07292d1f5b0640d117e387576339fff6a6bbb7ed.tar.xz lasso-07292d1f5b0640d117e387576339fff6a6bbb7ed.zip |
Added some lasso_node_destroy()
Diffstat (limited to 'lasso/Attic')
-rw-r--r-- | lasso/Attic/protocols/authn_request.c | 4 | ||||
-rw-r--r-- | lasso/Attic/protocols/authn_response.c | 104 | ||||
-rw-r--r-- | lasso/Attic/protocols/federation_termination_notification.c | 113 | ||||
-rw-r--r-- | lasso/Attic/protocols/logout_request.c | 13 | ||||
-rw-r--r-- | lasso/Attic/protocols/logout_response.c | 29 | ||||
-rw-r--r-- | lasso/Attic/protocols/name_identifier_mapping_request.c | 10 | ||||
-rw-r--r-- | lasso/Attic/protocols/name_identifier_mapping_response.c | 19 | ||||
-rw-r--r-- | lasso/Attic/protocols/register_name_identifier_request.c | 25 | ||||
-rw-r--r-- | lasso/Attic/protocols/register_name_identifier_response.c | 27 |
9 files changed, 202 insertions, 142 deletions
diff --git a/lasso/Attic/protocols/authn_request.c b/lasso/Attic/protocols/authn_request.c index dc58afea..87884354 100644 --- a/lasso/Attic/protocols/authn_request.c +++ b/lasso/Attic/protocols/authn_request.c @@ -89,6 +89,7 @@ lasso_authn_request_set_requestAuthnContext(LassoAuthnRequest *request, /* Add RequestAuthnContext in AuthnRequest */ lasso_lib_authn_request_set_requestAuthnContext(LASSO_LIB_AUTHN_REQUEST(request), LASSO_LIB_REQUEST_AUTHN_CONTEXT(request_authn_context)); + lasso_node_destroy(request_authn_context); } } @@ -107,6 +108,7 @@ lasso_authn_request_set_scoping(LassoAuthnRequest *request, /* FIXME : set IDPList here */ lasso_lib_authn_request_set_scoping(LASSO_LIB_AUTHN_REQUEST(request), LASSO_LIB_SCOPING(scoping)); + lasso_node_destroy(scoping); } /*****************************************************************************/ @@ -294,6 +296,7 @@ lasso_authn_request_new_from_query(gchar *query) if (authn_context != NULL) lasso_lib_authn_request_set_requestAuthnContext(LASSO_LIB_AUTHN_REQUEST(request), LASSO_LIB_REQUEST_AUTHN_CONTEXT(authn_context)); + lasso_node_destroy(authn_context); /* RelayState */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RelayState"), 0); @@ -311,6 +314,7 @@ lasso_authn_request_new_from_query(gchar *query) lasso_lib_scoping_set_proxyCount(LASSO_LIB_SCOPING(scoping), atoi(str)); lasso_lib_authn_request_set_scoping(LASSO_LIB_AUTHN_REQUEST(request), LASSO_LIB_SCOPING(scoping)); + lasso_node_destroy(scoping); } /* consent */ diff --git a/lasso/Attic/protocols/authn_response.c b/lasso/Attic/protocols/authn_response.c index ee934447..3ecb518f 100644 --- a/lasso/Attic/protocols/authn_response.c +++ b/lasso/Attic/protocols/authn_response.c @@ -28,6 +28,26 @@ static GObjectClass *parent_class = NULL; +static void +lasso_authn_response_set_status(LassoAuthnResponse *response, + const xmlChar *statusCodeValue) { + LassoNode *status, *status_code; + + status = lasso_samlp_status_new(); + + status_code = lasso_samlp_status_code_new(); + lasso_samlp_status_code_set_value(LASSO_SAMLP_STATUS_CODE(status_code), + statusCodeValue); + + lasso_samlp_status_set_statusCode(LASSO_SAMLP_STATUS(status), + LASSO_SAMLP_STATUS_CODE(status_code)); + + lasso_samlp_response_set_status(LASSO_SAMLP_RESPONSE(response), + LASSO_SAMLP_STATUS(status)); + lasso_node_destroy(status_code); + lasso_node_destroy(status); +} + /*****************************************************************************/ /* public methods */ /*****************************************************************************/ @@ -54,7 +74,11 @@ lasso_authn_response_must_authenticate(LassoAuthnResponse *response, if ((forceAuthn == TRUE || is_authenticated == FALSE) && isPassive == FALSE) { must_authenticate = TRUE; } - + else + if (is_authenticated == FALSE && isPassive == TRUE) { + lasso_authn_response_set_status(response, lassoLibStatusCodeNoPassive); + } + g_datalist_clear(&gd); return (must_authenticate); } @@ -63,17 +87,8 @@ void lasso_authn_response_process_authentication_result(LassoAuthnResponse *response, gboolean authentication_result) { - LassoNode *status, *status_code; - if (authentication_result == FALSE) { - status = lasso_samlp_status_new(); - status_code = lasso_samlp_status_code_new(); - lasso_samlp_status_code_set_value(LASSO_SAMLP_STATUS_CODE(status_code), - lassoLibStatusCodeUnknownPrincipal); - lasso_samlp_status_set_statusCode(LASSO_SAMLP_STATUS(status), - LASSO_SAMLP_STATUS_CODE(status_code)); - lasso_samlp_response_set_status(LASSO_SAMLP_RESPONSE(response), - LASSO_SAMLP_STATUS(status)); + lasso_authn_response_set_status(response, lassoLibStatusCodeUnknownPrincipal); } } @@ -84,7 +99,6 @@ lasso_authn_response_verify_signature(LassoAuthnResponse *response, { g_return_val_if_fail(LASSO_IS_AUTHN_RESPONSE(response), FALSE); - LassoNode *status, *status_code; gboolean signature_status; signature_status = lasso_query_verify_signature(LASSO_AUTHN_RESPONSE(response)->query, @@ -93,22 +107,14 @@ lasso_authn_response_verify_signature(LassoAuthnResponse *response, /* Status & StatusCode */ if (signature_status == 0 || signature_status == 2) { - status = lasso_samlp_status_new(); - status_code = lasso_samlp_status_code_new(); switch (signature_status) { case 0: - lasso_samlp_status_code_set_value(LASSO_SAMLP_STATUS_CODE(status_code), - lassoLibStatusCodeInvalidSignature); + lasso_authn_response_set_status(response, lassoLibStatusCodeInvalidSignature); break; case 2: - lasso_samlp_status_code_set_value(LASSO_SAMLP_STATUS_CODE(status_code), - lassoLibStatusCodeUnsignedAuthnRequest); + lasso_authn_response_set_status(response, lassoLibStatusCodeUnsignedAuthnRequest); break; } - lasso_samlp_status_set_statusCode(LASSO_SAMLP_STATUS(status), - LASSO_SAMLP_STATUS_CODE(status_code)); - lasso_samlp_response_set_status(LASSO_SAMLP_RESPONSE(response), - LASSO_SAMLP_STATUS(status)); } if (signature_status == 1) @@ -133,21 +139,26 @@ lasso_authn_response_dump(LassoAuthnResponse *response, const xmlChar *encoding, int format) { - LassoNode *response_dump; + LassoNode *response_copy, *request, *response_dump; xmlChar *dump; response_dump = lasso_node_new(); LASSO_NODE_GET_CLASS(response_dump)->set_name(response_dump, "LassoDumpAuthnResponse"); - LASSO_NODE_GET_CLASS(response_dump)->add_child(response_dump, - lasso_node_copy(LASSO_NODE(response)), 0); - if (response->query != NULL) - LASSO_NODE_GET_CLASS(response_dump)->add_child(response_dump, - lasso_authn_request_new_from_query(response->query), 0); - else - LASSO_NODE_GET_CLASS(response_dump)->add_child(response_dump, - lasso_node_copy(response->request), 0); + response_copy = lasso_node_copy(LASSO_NODE(response)); + LASSO_NODE_GET_CLASS(response_dump)->add_child(response_dump, response_copy, FALSE); + if (response->query != NULL) { + request = lasso_authn_request_new_from_query(response->query); + LASSO_NODE_GET_CLASS(response_dump)->add_child(response_dump, request, FALSE); + } + else { + request = lasso_node_copy(response->request); + LASSO_NODE_GET_CLASS(response_dump)->add_child(response_dump, request, FALSE); + } dump = lasso_node_dump(response_dump, encoding, format); - g_object_unref(G_OBJECT (response_dump)); + + lasso_node_destroy(response_copy); + lasso_node_destroy(request); + lasso_node_destroy(response_dump); return (dump); } @@ -158,7 +169,7 @@ lasso_authn_response_finalize(LassoAuthnResponse *response) if (response->query != NULL) g_free(response->query); if (response->request != NULL) - g_object_unref(response->request); + lasso_node_destroy(response->request); parent_class->finalize(G_OBJECT(response)); } @@ -210,7 +221,7 @@ GType lasso_authn_response_get_type() { LassoNode* lasso_authn_response_new_from_dump(xmlChar *buffer) { - LassoNode *response, *request, *node_dump; + LassoNode *response, *request, *response_dump, *request_dump, *node_dump; xmlNodePtr xmlNode_response, xmlNode_request; g_return_val_if_fail(buffer != NULL, NULL); @@ -220,8 +231,11 @@ lasso_authn_response_new_from_dump(xmlChar *buffer) node_dump = lasso_node_new_from_dump(buffer); /* get xmlNodes */ - xmlNode_response = xmlCopyNode(LASSO_NODE_GET_CLASS(response)->get_xmlNode(lasso_node_get_child(node_dump, "AuthnResponse")), 1); - xmlNode_request = xmlCopyNode(LASSO_NODE_GET_CLASS(response)->get_xmlNode(lasso_node_get_child(node_dump, "AuthnRequest")), 1); + response_dump = lasso_node_get_child(node_dump, "AuthnResponse", NULL); + request_dump = lasso_node_get_child(node_dump, "AuthnRequest", NULL); + /* xmlNodes are copies because they will be freed when node_dump will be destroy */ + xmlNode_response = xmlCopyNode(LASSO_NODE_GET_CLASS(response)->get_xmlNode(response_dump), 1); + xmlNode_request = xmlCopyNode(LASSO_NODE_GET_CLASS(response)->get_xmlNode(request_dump), 1); /* put xmlNodes in LassoNodes */ LASSO_NODE_GET_CLASS(response)->set_xmlNode(response, xmlNode_response); @@ -229,7 +243,10 @@ lasso_authn_response_new_from_dump(xmlChar *buffer) LASSO_AUTHN_RESPONSE(response)->request = request; LASSO_AUTHN_RESPONSE(response)->query = NULL; - g_object_unref(node_dump); + + lasso_node_destroy(response_dump); + lasso_node_destroy(request_dump); + lasso_node_destroy(node_dump); return (response); } @@ -254,7 +271,7 @@ lasso_authn_response_new_from_export(xmlChar *buffer, LASSO_AUTHN_RESPONSE(response)->request = NULL; LASSO_AUTHN_RESPONSE(response)->query = NULL; - g_object_unref(node); + lasso_node_destroy(node); return (response); } @@ -264,7 +281,7 @@ lasso_authn_response_new_from_request_query(gchar *query, const xmlChar *providerID) { GData *gd; - LassoNode *response, *status, *status_code; + LassoNode *response; xmlChar *id, *time; g_return_val_if_fail(query != NULL, NULL); @@ -320,14 +337,7 @@ lasso_authn_response_new_from_request_query(gchar *query, lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ProviderID"), 0)); /* Status & StatusCode */ - status = lasso_samlp_status_new(); - status_code = lasso_samlp_status_code_new(); - lasso_samlp_status_code_set_value(LASSO_SAMLP_STATUS_CODE(status_code), - lassoSamlStatusCodeSuccess); - lasso_samlp_status_set_statusCode(LASSO_SAMLP_STATUS(status), - LASSO_SAMLP_STATUS_CODE(status_code)); - lasso_samlp_response_set_status(LASSO_SAMLP_RESPONSE(response), - LASSO_SAMLP_STATUS(status)); + lasso_authn_response_set_status(response, lassoSamlStatusCodeSuccess); g_datalist_clear(&gd); diff --git a/lasso/Attic/protocols/federation_termination_notification.c b/lasso/Attic/protocols/federation_termination_notification.c index 203e7044..77362858 100644 --- a/lasso/Attic/protocols/federation_termination_notification.c +++ b/lasso/Attic/protocols/federation_termination_notification.c @@ -105,6 +105,7 @@ lasso_federation_termination_notification_new(const xmlChar *providerID, lasso_lib_federation_termination_notification_set_nameIdentifier(LASSO_LIB_FEDERATION_TERMINATION_NOTIFICATION(request), LASSO_SAML_NAME_IDENTIFIER(identifier)); + lasso_node_destroy(identifier); return (request); } @@ -112,68 +113,70 @@ lasso_federation_termination_notification_new(const xmlChar *providerID, LassoNode * lasso_federation_termination_notification_new_from_query(const xmlChar *query) { - LassoNode *notification, *identifier; - xmlChar *str; - GData *gd; - - notification = LASSO_NODE(g_object_new(LASSO_TYPE_FEDERATION_TERMINATION_NOTIFICATION, NULL)); - - gd = lasso_query_to_dict(query); - - /* RequestID */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RequestID"), 0); - lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(notification), str); + LassoNode *notification, *identifier; + xmlChar *str; + GData *gd; - /* MajorVersion */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MajorVersion"), 0); - lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(notification), str); + notification = LASSO_NODE(g_object_new(LASSO_TYPE_FEDERATION_TERMINATION_NOTIFICATION, NULL)); - /* MinorVersion */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MinorVersion"), 0); - lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(notification), str); + gd = lasso_query_to_dict(query); - /* IssueInstant */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "IssueInstance"), 0); - lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(notification), str); + /* RequestID */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RequestID"), 0); + lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(notification), str); - /* ProviderID */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ProviderID"), 0); - lasso_lib_federation_termination_notification_set_providerID(LASSO_LIB_FEDERATION_TERMINATION_NOTIFICATION(notification), str); - - /* NameIdentifier */ - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameIdentifier"), 0); - identifier = lasso_saml_name_identifier_new(str); - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameQualifier"), 0); - lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(identifier), str); - str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "Format"), 0); - lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(identifier), str); - - lasso_lib_federation_termination_notification_set_nameIdentifier(LASSO_LIB_FEDERATION_TERMINATION_NOTIFICATION(notification), - LASSO_SAML_NAME_IDENTIFIER(identifier)); - - return(notification); + /* MajorVersion */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MajorVersion"), 0); + lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(notification), str); + + /* MinorVersion */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MinorVersion"), 0); + lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(notification), str); + + /* IssueInstant */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "IssueInstance"), 0); + lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(notification), str); + + /* ProviderID */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ProviderID"), 0); + lasso_lib_federation_termination_notification_set_providerID(LASSO_LIB_FEDERATION_TERMINATION_NOTIFICATION(notification), str); + + /* NameIdentifier */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameIdentifier"), 0); + identifier = lasso_saml_name_identifier_new(str); + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameQualifier"), 0); + lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(identifier), str); + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "Format"), 0); + lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(identifier), str); + + lasso_lib_federation_termination_notification_set_nameIdentifier(LASSO_LIB_FEDERATION_TERMINATION_NOTIFICATION(notification), + LASSO_SAML_NAME_IDENTIFIER(identifier)); + lasso_node_destroy(identifier); + + return(notification); } LassoNode * lasso_federation_termination_notification_new_from_soap(const xmlChar *buffer) { - LassoNode *notification; - LassoNode *envelope, *lassoNode_notification; - xmlNodePtr xmlNode_notification; - LassoNodeClass *class; - - notification = LASSO_NODE(g_object_new(LASSO_TYPE_FEDERATION_TERMINATION_NOTIFICATION, NULL)); - - envelope = lasso_node_new_from_dump(buffer); - lassoNode_notification = lasso_node_get_child(envelope, "FederationTerminationNotification"); - - class = LASSO_NODE_GET_CLASS(lassoNode_notification); - xmlNode_notification = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_notification)), 1); - - class = LASSO_NODE_GET_CLASS(notification); - class->set_xmlNode(LASSO_NODE(notification), xmlNode_notification); - g_object_unref(envelope); - - return(notification); + LassoNode *notification; + LassoNode *envelope, *lassoNode_notification; + xmlNodePtr xmlNode_notification; + LassoNodeClass *class; + + notification = LASSO_NODE(g_object_new(LASSO_TYPE_FEDERATION_TERMINATION_NOTIFICATION, NULL)); + + envelope = lasso_node_new_from_dump(buffer); + lassoNode_notification = lasso_node_get_child(envelope, "FederationTerminationNotification", + lassoLibHRef); + + class = LASSO_NODE_GET_CLASS(lassoNode_notification); + xmlNode_notification = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_notification)), 1); + lasso_node_destroy(lassoNode_notification); + + class = LASSO_NODE_GET_CLASS(notification); + class->set_xmlNode(LASSO_NODE(notification), xmlNode_notification); + lasso_node_destroy(envelope); + + return(notification); } - diff --git a/lasso/Attic/protocols/logout_request.c b/lasso/Attic/protocols/logout_request.c index 8a863622..4d9c2bde 100644 --- a/lasso/Attic/protocols/logout_request.c +++ b/lasso/Attic/protocols/logout_request.c @@ -105,7 +105,8 @@ lasso_logout_request_new(const xmlChar *providerID, lasso_lib_logout_request_set_nameIdentifier(LASSO_LIB_LOGOUT_REQUEST(request), LASSO_SAML_NAME_IDENTIFIER(identifier)); - + lasso_node_destroy(identifier); + return(request); } @@ -147,8 +148,9 @@ lasso_logout_request_new_from_query(const xmlChar *query) lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(identifier), str); str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "Format"), 0); lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(identifier), str); - + lasso_lib_logout_request_set_nameIdentifier(LASSO_LIB_LOGOUT_REQUEST(request), LASSO_SAML_NAME_IDENTIFIER(identifier)); + lasso_node_destroy(identifier); /* RelayState */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RelayState"), 0); @@ -181,14 +183,15 @@ lasso_logout_request_new_from_soap(const xmlChar *buffer) request = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_REQUEST, NULL)); envelope = lasso_node_new_from_dump(buffer); - lassoNode_request = lasso_node_get_child(envelope, "LogoutRequest"); + lassoNode_request = lasso_node_get_child(envelope, "LogoutRequest", lassoLibHRef); class = LASSO_NODE_GET_CLASS(lassoNode_request); xmlNode_request = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_request)), 1); - + lasso_node_destroy(lassoNode_request); + class = LASSO_NODE_GET_CLASS(request); class->set_xmlNode(LASSO_NODE(request), xmlNode_request); - g_object_unref(envelope); + lasso_node_destroy(envelope); return(request); } diff --git a/lasso/Attic/protocols/logout_response.c b/lasso/Attic/protocols/logout_response.c index 4e41c379..34bf824c 100644 --- a/lasso/Attic/protocols/logout_response.c +++ b/lasso/Attic/protocols/logout_response.c @@ -71,7 +71,7 @@ lasso_logout_response_new(const xmlChar *providerID, const xmlChar *statusCodeValue, LassoNode *request) { - LassoNode *response, *ss, *ssc; + LassoNode *response, *ss, *ssc, *request_providerID, *request_relayState; xmlChar *inResponseTo, *recipient, *relayState; xmlChar *id, *time; @@ -102,16 +102,20 @@ lasso_logout_response_new(const xmlChar *providerID, lasso_samlp_response_abstract_set_inResponseTo(LASSO_SAMLP_RESPONSE_ABSTRACT(response), inResponseTo); - - recipient = lasso_node_get_content(lasso_node_get_child(request, "ProviderID")); + request_providerID = lasso_node_get_child(request, "ProviderID", NULL); + recipient = lasso_node_get_content(request_providerID); lasso_samlp_response_abstract_set_recipient(LASSO_SAMLP_RESPONSE_ABSTRACT(response), recipient); + lasso_node_destroy(request_providerID); - relayState = lasso_node_get_content(lasso_node_get_child(request, "RelayState")); - if (relayState != NULL) + request_relayState = lasso_node_get_child(request, "RelayState", NULL); + if (request_relayState != NULL) { + relayState = lasso_node_get_content(request_relayState); lasso_lib_status_response_set_relayState(LASSO_LIB_STATUS_RESPONSE(response), relayState); - + lasso_node_destroy(request_relayState); + } + ss = lasso_samlp_status_new(); ssc = lasso_samlp_status_code_new(); lasso_samlp_status_code_set_value(LASSO_SAMLP_STATUS_CODE(ssc), @@ -120,6 +124,8 @@ lasso_logout_response_new(const xmlChar *providerID, LASSO_SAMLP_STATUS_CODE(ssc)); lasso_lib_status_response_set_status(LASSO_LIB_STATUS_RESPONSE(response), LASSO_SAMLP_STATUS(ss)); + lasso_node_destroy(ssc); + lasso_node_destroy(ss); return (response); } @@ -198,7 +204,8 @@ lasso_logout_response_new_from_request_query(const xmlChar *query, response = lasso_logout_response_new(providerID, statusCodeValue, request); - + lasso_node_destroy(request); + return(response); } @@ -215,6 +222,7 @@ lasso_logout_response_new_from_request_soap(const xmlChar *buffer, response = lasso_logout_response_new(providerID, statusCodeValue, request); + lasso_node_destroy(request); return(response); } @@ -230,14 +238,15 @@ lasso_logout_response_new_from_soap(const xmlChar *buffer) response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); envelope = lasso_node_new_from_dump(buffer); - lassoNode_response = lasso_node_get_child(envelope, "LogoutResponse"); + lassoNode_response = lasso_node_get_child(envelope, "LogoutResponse", lassoLibHRef); class = LASSO_NODE_GET_CLASS(lassoNode_response); xmlNode_response = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_response)), 1); - + lasso_node_destroy(lassoNode_response); + class = LASSO_NODE_GET_CLASS(response); class->set_xmlNode(LASSO_NODE(response), xmlNode_response); - g_object_unref(envelope); + lasso_node_destroy(envelope); return(response); } diff --git a/lasso/Attic/protocols/name_identifier_mapping_request.c b/lasso/Attic/protocols/name_identifier_mapping_request.c index 16536ddd..b49f35d7 100644 --- a/lasso/Attic/protocols/name_identifier_mapping_request.c +++ b/lasso/Attic/protocols/name_identifier_mapping_request.c @@ -112,6 +112,7 @@ lasso_name_identifier_mapping_request_new(const xmlChar *providerID, lasso_lib_name_identifier_mapping_request_set_nameIdentifier(LASSO_LIB_NAME_IDENTIFIER_MAPPING_REQUEST(request), LASSO_SAML_NAME_IDENTIFIER(identifier)); + lasso_node_destroy(identifier); return (request); } @@ -157,6 +158,7 @@ lasso_name_identifier_mapping_request_new_from_query(const xmlChar *query) lasso_lib_name_identifier_mapping_request_set_nameIdentifier(LASSO_LIB_NAME_IDENTIFIER_MAPPING_REQUEST(request), LASSO_SAML_NAME_IDENTIFIER(identifier)); + lasso_node_destroy(identifier); /* consent */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "consent"), 0); @@ -179,14 +181,16 @@ lasso_name_identifier_mapping_request_new_from_soap(const xmlChar *buffer) request = LASSO_NODE(g_object_new(LASSO_TYPE_NAME_IDENTIFIER_MAPPING_REQUEST, NULL)); envelope = lasso_node_new_from_dump(buffer); - lassoNode_request = lasso_node_get_child(envelope, "NameIdentifierMappingRequest"); + lassoNode_request = lasso_node_get_child(envelope, "NameIdentifierMappingRequest", + lassoLibHRef); class = LASSO_NODE_GET_CLASS(lassoNode_request); xmlNode_request = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_request)), 1); - + lasso_node_destroy(lassoNode_request); + class = LASSO_NODE_GET_CLASS(request); class->set_xmlNode(LASSO_NODE(request), xmlNode_request); - g_object_unref(envelope); + lasso_node_destroy(envelope); return(request); } diff --git a/lasso/Attic/protocols/name_identifier_mapping_response.c b/lasso/Attic/protocols/name_identifier_mapping_response.c index 39aba017..d83fc407 100644 --- a/lasso/Attic/protocols/name_identifier_mapping_response.c +++ b/lasso/Attic/protocols/name_identifier_mapping_response.c @@ -72,7 +72,7 @@ lasso_name_identifier_mapping_response_new(const xmlChar *providerID, LassoNode *request) { /* FIXME : change request type */ - LassoNode *response, *ss, *ssc; + LassoNode *response, *ss, *ssc, *request_providerID; xmlChar *inResponseTo, *recipient, *relayState; xmlChar *id, *time; @@ -100,13 +100,14 @@ lasso_name_identifier_mapping_response_new(const xmlChar *providerID, providerID); inResponseTo = xmlNodeGetContent((xmlNodePtr)lasso_node_get_attr(request, "RequestID")); - recipient = lasso_node_get_content(lasso_node_get_child(request, "ProviderID")); - lasso_samlp_response_abstract_set_inResponseTo(LASSO_SAMLP_RESPONSE_ABSTRACT(response), inResponseTo); + request_providerID = lasso_node_get_child(request, "ProviderID", NULL); + recipient = lasso_node_get_content(request_providerID); lasso_samlp_response_abstract_set_recipient(LASSO_SAMLP_RESPONSE_ABSTRACT(response), recipient); + lasso_node_destroy(request_providerID); ss = lasso_samlp_status_new(); ssc = lasso_samlp_status_code_new(); @@ -117,6 +118,8 @@ lasso_name_identifier_mapping_response_new(const xmlChar *providerID, lasso_lib_name_identifier_mapping_response_set_status(LASSO_LIB_NAME_IDENTIFIER_MAPPING_RESPONSE(response), LASSO_SAMLP_STATUS(ss)); + lasso_node_destroy(ssc); + lasso_node_destroy(ss); return (response); } @@ -191,6 +194,7 @@ lasso_name_identifier_mapping_response_new_from_request_soap(const xmlChar *buff response = lasso_name_identifier_mapping_response_new(providerID, statusCodeValue, request); + lasso_node_destroy(request); return(response); } @@ -206,14 +210,16 @@ lasso_name_identifier_mapping_response_new_from_soap(const xmlChar *buffer) response = LASSO_NODE(g_object_new(LASSO_TYPE_NAME_IDENTIFIER_MAPPING_RESPONSE, NULL)); envelope = lasso_node_new_from_dump(buffer); - lassoNode_response = lasso_node_get_child(envelope, "NameIdentifierMappingResponse"); + lassoNode_response = lasso_node_get_child(envelope, "NameIdentifierMappingResponse", + lassoLibHRef); class = LASSO_NODE_GET_CLASS(lassoNode_response); xmlNode_response = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_response)), 1); - + lasso_node_destroy(lassoNode_response); + class = LASSO_NODE_GET_CLASS(response); class->set_xmlNode(LASSO_NODE(response), xmlNode_response); - g_object_unref(envelope); + lasso_node_destroy(envelope); return(response); } @@ -231,6 +237,7 @@ lasso_name_identifier_mapping_response_new_from_request_query(const xmlChar *que response = lasso_name_identifier_mapping_response_new(providerID, statusCodeValue, request); + lasso_node_destroy(request); return(response); } diff --git a/lasso/Attic/protocols/register_name_identifier_request.c b/lasso/Attic/protocols/register_name_identifier_request.c index 9dac1fbd..99ec57dc 100644 --- a/lasso/Attic/protocols/register_name_identifier_request.c +++ b/lasso/Attic/protocols/register_name_identifier_request.c @@ -36,17 +36,20 @@ lasso_register_name_identifier_rename_attributes_for_query(LassoRegisterNameIden g_return_if_fail (LASSO_IS_REGISTER_NAME_IDENTIFIER_REQUEST(request)); - idpidentifier = lasso_node_get_child(LASSO_NODE(request), "IDPProvidedNameIdentifier"); + idpidentifier = lasso_node_get_child(LASSO_NODE(request), "IDPProvidedNameIdentifier", NULL); lasso_node_rename_prop(idpidentifier, "NameQualifier", "IDPNameQualifier"); lasso_node_rename_prop(idpidentifier, "Format", "IDPFormat"); + lasso_node_destroy(idpidentifier); - spidentifier = lasso_node_get_child(LASSO_NODE(request), "SPProvidedNameIdentifier"); + spidentifier = lasso_node_get_child(LASSO_NODE(request), "SPProvidedNameIdentifier", NULL); lasso_node_rename_prop(spidentifier, "NameQualifier", "SPNameQualifier"); lasso_node_rename_prop(spidentifier, "Format", "SPFormat"); + lasso_node_destroy(spidentifier); - oldidentifier = lasso_node_get_child(LASSO_NODE(request), "OldProvidedNameIdentifier"); + oldidentifier = lasso_node_get_child(LASSO_NODE(request), "OldProvidedNameIdentifier", NULL); lasso_node_rename_prop(oldidentifier, "NameQualifier", "OldNameQualifier"); lasso_node_rename_prop(oldidentifier, "Format", "OldFormat"); + lasso_node_destroy(oldidentifier); } /*****************************************************************************/ @@ -129,18 +132,21 @@ lasso_register_name_identifier_request_new(const xmlChar *providerID, lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(idpidentifier), idpFormat); lasso_lib_register_name_identifier_request_set_idpProvidedNameIdentifier(LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(request), LASSO_LIB_IDP_PROVIDED_NAME_IDENTIFIER(idpidentifier)); + lasso_node_destroy(idpidentifier); spidentifier = lasso_lib_sp_provided_name_identifier_new(spProvidedNameIdentifier); lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(spidentifier), spNameQualifier); lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(spidentifier), spFormat); lasso_lib_register_name_identifier_request_set_spProvidedNameIdentifier(LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(request), LASSO_LIB_SP_PROVIDED_NAME_IDENTIFIER(spidentifier)); + lasso_node_destroy(spidentifier); oldidentifier = lasso_lib_old_provided_name_identifier_new(oldProvidedNameIdentifier); lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(oldidentifier), oldNameQualifier); lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(oldidentifier), oldFormat); lasso_lib_register_name_identifier_request_set_oldProvidedNameIdentifier(LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(request), LASSO_LIB_OLD_PROVIDED_NAME_IDENTIFIER(oldidentifier)); + lasso_node_destroy(oldidentifier); return (request); } @@ -191,6 +197,7 @@ lasso_register_name_identifier_request_new_from_query(const xmlChar *query) lasso_lib_register_name_identifier_request_set_idpProvidedNameIdentifier(LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(request), LASSO_LIB_IDP_PROVIDED_NAME_IDENTIFIER(idpidentifier)); + lasso_node_destroy(idpidentifier); /* SPPProvidedNameIdentifier */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "SPProvidedNameIdentifier"), 0); @@ -202,6 +209,7 @@ lasso_register_name_identifier_request_new_from_query(const xmlChar *query) lasso_lib_register_name_identifier_request_set_spProvidedNameIdentifier(LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(request), LASSO_LIB_SP_PROVIDED_NAME_IDENTIFIER(spidentifier)); + lasso_node_destroy(spidentifier); /* OldPProvidedNameIdentifier */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "OldProvidedNameIdentifier"), 0); @@ -213,7 +221,8 @@ lasso_register_name_identifier_request_new_from_query(const xmlChar *query) lasso_lib_register_name_identifier_request_set_oldProvidedNameIdentifier(LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(request), LASSO_LIB_OLD_PROVIDED_NAME_IDENTIFIER(oldidentifier)); - + lasso_node_destroy(oldidentifier); + g_datalist_clear(&gd); return(request); @@ -230,14 +239,16 @@ lasso_register_name_identifier_request_new_from_soap(const xmlChar *buffer) request = LASSO_NODE(g_object_new(LASSO_TYPE_REGISTER_NAME_IDENTIFIER_REQUEST, NULL)); envelope = lasso_node_new_from_dump(buffer); - lassoNode_request = lasso_node_get_child(envelope, "RegisterNameIdentifierRequest"); + lassoNode_request = lasso_node_get_child(envelope, "RegisterNameIdentifierRequest", + lassoLibHRef); class = LASSO_NODE_GET_CLASS(lassoNode_request); xmlNode_request = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_request)), 1); - + lasso_node_destroy(lassoNode_request); + class = LASSO_NODE_GET_CLASS(request); class->set_xmlNode(LASSO_NODE(request), xmlNode_request); - g_object_unref(envelope); + lasso_node_destroy(envelope); return(request); } diff --git a/lasso/Attic/protocols/register_name_identifier_response.c b/lasso/Attic/protocols/register_name_identifier_response.c index cadc76dd..d0acd7d4 100644 --- a/lasso/Attic/protocols/register_name_identifier_response.c +++ b/lasso/Attic/protocols/register_name_identifier_response.c @@ -72,7 +72,7 @@ lasso_register_name_identifier_response_new(const xmlChar *providerID, LassoNode *request) { /* FIXME : change request type */ - LassoNode *response, *ss, *ssc; + LassoNode *response, *ss, *ssc, *request_providerID, *request_relayState; xmlChar *inResponseTo, *recipient, *relayState; xmlChar *id, *time; @@ -100,18 +100,21 @@ lasso_register_name_identifier_response_new(const xmlChar *providerID, providerID); inResponseTo = xmlNodeGetContent((xmlNodePtr)lasso_node_get_attr(request, "RequestID")); - recipient = lasso_node_get_content(lasso_node_get_child(request, "ProviderID")); - lasso_samlp_response_abstract_set_inResponseTo(LASSO_SAMLP_RESPONSE_ABSTRACT(response), inResponseTo); + request_providerID = lasso_node_get_child(request, "ProviderID", NULL); + recipient = lasso_node_get_content(request_providerID); lasso_samlp_response_abstract_set_recipient(LASSO_SAMLP_RESPONSE_ABSTRACT(response), recipient); + lasso_node_destroy(request_providerID); - relayState = lasso_node_get_content(lasso_node_get_child(request, "RelayState")); - if (relayState != NULL) { + request_relayState = lasso_node_get_child(request, "RelayState", NULL); + if (request_relayState != NULL) { + relayState = lasso_node_get_content(request_relayState); lasso_lib_status_response_set_relayState(LASSO_LIB_STATUS_RESPONSE(response), relayState); + lasso_node_destroy(request_relayState); } ss = lasso_samlp_status_new(); @@ -122,6 +125,8 @@ lasso_register_name_identifier_response_new(const xmlChar *providerID, LASSO_SAMLP_STATUS_CODE(ssc)); lasso_lib_status_response_set_status(LASSO_LIB_STATUS_RESPONSE(response), LASSO_SAMLP_STATUS(ss)); + lasso_node_destroy(ssc); + lasso_node_destroy(ss); return (response); } @@ -200,6 +205,7 @@ lasso_register_name_identifier_response_new_from_request_query(const xmlChar *qu response = lasso_register_name_identifier_response_new(providerID, statusCodeValue, request); + lasso_node_destroy(request); return(response); } @@ -217,6 +223,7 @@ lasso_register_name_identifier_response_new_from_request_soap(const xmlChar *buf response = lasso_register_name_identifier_response_new(providerID, statusCodeValue, request); + lasso_node_destroy(request); return(response); } @@ -232,14 +239,16 @@ lasso_register_name_identifier_response_new_from_soap(const xmlChar *buffer) response = LASSO_NODE(g_object_new(LASSO_TYPE_REGISTER_NAME_IDENTIFIER_RESPONSE, NULL)); envelope = lasso_node_new_from_dump(buffer); - lassoNode_response = lasso_node_get_child(envelope, "RegisterNameIdentifierResponse"); - + lassoNode_response = lasso_node_get_child(envelope, "RegisterNameIdentifierResponse", + lassoLibHRef); + class = LASSO_NODE_GET_CLASS(lassoNode_response); xmlNode_response = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_response)), 1); - + lasso_node_destroy(lassoNode_response); + class = LASSO_NODE_GET_CLASS(response); class->set_xmlNode(LASSO_NODE(response), xmlNode_response); - g_object_unref(envelope); + lasso_node_destroy(envelope); return(response); } |