summaryrefslogtreecommitdiffstats
path: root/lasso/Attic
diff options
context:
space:
mode:
Diffstat (limited to 'lasso/Attic')
-rw-r--r--lasso/Attic/protocols/authn_request.c4
-rw-r--r--lasso/Attic/protocols/authn_response.c104
-rw-r--r--lasso/Attic/protocols/federation_termination_notification.c113
-rw-r--r--lasso/Attic/protocols/logout_request.c13
-rw-r--r--lasso/Attic/protocols/logout_response.c29
-rw-r--r--lasso/Attic/protocols/name_identifier_mapping_request.c10
-rw-r--r--lasso/Attic/protocols/name_identifier_mapping_response.c19
-rw-r--r--lasso/Attic/protocols/register_name_identifier_request.c25
-rw-r--r--lasso/Attic/protocols/register_name_identifier_response.c27
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);
}