summaryrefslogtreecommitdiffstats
path: root/lasso
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-08-11 21:14:45 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-08-11 21:14:45 +0000
commite356eaec446a6af0713d5db6352c1df5482d3d52 (patch)
treed8e00d4802f3f6d094ff170657444ad34b5de323 /lasso
parentdbbe0e32dc1eb43bcdf590389b94915c8af37839 (diff)
downloadlasso-e356eaec446a6af0713d5db6352c1df5482d3d52.tar.gz
lasso-e356eaec446a6af0713d5db6352c1df5482d3d52.tar.xz
lasso-e356eaec446a6af0713d5db6352c1df5482d3d52.zip
Changed return type for 5 methods in LassoNode:
lasso_node_dump, lasso_node_export, lasso_node_export_to_base64, lasso_node_export_to_query, lasso_node_export_to_soap
Diffstat (limited to 'lasso')
-rw-r--r--lasso/Attic/protocols/authn_request.c11
-rw-r--r--lasso/Attic/protocols/authn_request_envelope.h4
-rw-r--r--lasso/Attic/protocols/authn_response.c2
-rw-r--r--lasso/Attic/protocols/authn_response.h12
-rw-r--r--lasso/Attic/protocols/authn_response_envelope.h6
-rw-r--r--lasso/Attic/protocols/federation.c4
-rw-r--r--lasso/Attic/protocols/federation.h4
-rw-r--r--lasso/Attic/protocols/federation_termination_notification.c6
-rw-r--r--lasso/Attic/protocols/federation_termination_notification.h2
-rw-r--r--lasso/Attic/protocols/name_identifier_mapping_request.c4
-rw-r--r--lasso/Attic/protocols/name_identifier_mapping_request.h4
-rw-r--r--lasso/Attic/protocols/name_identifier_mapping_response.c10
-rw-r--r--lasso/Attic/protocols/name_identifier_mapping_response.h15
-rw-r--r--lasso/Attic/protocols/request.c4
-rw-r--r--lasso/Attic/protocols/response.c6
-rw-r--r--lasso/Attic/protocols/response.h2
-rw-r--r--lasso/id-ff/identity.c2
-rw-r--r--lasso/id-ff/session.c2
-rw-r--r--lasso/xml/xml.c209
-rw-r--r--lasso/xml/xml.h98
20 files changed, 262 insertions, 145 deletions
diff --git a/lasso/Attic/protocols/authn_request.c b/lasso/Attic/protocols/authn_request.c
index c9fa935b..cf78c0c5 100644
--- a/lasso/Attic/protocols/authn_request.c
+++ b/lasso/Attic/protocols/authn_request.c
@@ -185,10 +185,11 @@ LassoNode*
lasso_authn_request_new_from_export(gchar *buffer,
lassoNodeExportType export_type)
{
- LassoNode *request=NULL, *authn_context=NULL, *scoping;
+ LassoNode *request = NULL, *authn_context = NULL, *scoping;
LassoNode *request_node, *soap_node;
GData *gd;
- xmlChar *str, *export;
+ xmlChar *str, *buffer_decoded;
+ gchar *export;
GPtrArray *array;
gint i;
@@ -345,6 +346,10 @@ lasso_authn_request_new_from_export(gchar *buffer,
g_datalist_clear(&gd);
break;
case lassoNodeExportTypeBase64:
+ buffer_decoded = xmlMalloc(strlen(buffer));
+ xmlSecBase64Decode(buffer, buffer_decoded, strlen(buffer));
+ lasso_node_import(request, buffer_decoded);
+ xmlFree(buffer_decoded);
break;
case lassoNodeExportTypeSoap:
soap_node = lasso_node_new_from_dump(buffer);
@@ -352,7 +357,7 @@ lasso_authn_request_new_from_export(gchar *buffer,
lassoLibHRef, NULL);
export = lasso_node_export(request_node);
lasso_node_import(request, export);
- xmlFree(export);
+ g_free(export);
lasso_node_destroy(request_node);
lasso_node_destroy(soap_node);
break;
diff --git a/lasso/Attic/protocols/authn_request_envelope.h b/lasso/Attic/protocols/authn_request_envelope.h
index 7e722d89..d48410cc 100644
--- a/lasso/Attic/protocols/authn_request_envelope.h
+++ b/lasso/Attic/protocols/authn_request_envelope.h
@@ -60,11 +60,11 @@ LASSO_EXPORT LassoNode* lasso_authn_request_envelope_new (LassoAuth
xmlChar *providerID,
xmlChar *assertionConsumerServiceURL);
-LASSO_EXPORT LassoNode* lasso_authn_request_envelope_get_authnRequest (LassoAuthnRequestEnvelope *request);
-
LASSO_EXPORT LassoNode* lasso_authn_request_envelope_new_from_export (gchar *buffer,
lassoNodeExportType export_type);
+LASSO_EXPORT LassoNode* lasso_authn_request_envelope_get_authnRequest (LassoAuthnRequestEnvelope *request);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/lasso/Attic/protocols/authn_response.c b/lasso/Attic/protocols/authn_response.c
index da644687..b3e4d893 100644
--- a/lasso/Attic/protocols/authn_response.c
+++ b/lasso/Attic/protocols/authn_response.c
@@ -165,7 +165,7 @@ lasso_authn_response_new(char *providerID,
}
LassoNode*
-lasso_authn_response_new_from_export(xmlChar *buffer,
+lasso_authn_response_new_from_export(gchar *buffer,
lassoNodeExportType export_type)
{
xmlChar *buffer_decoded;
diff --git a/lasso/Attic/protocols/authn_response.h b/lasso/Attic/protocols/authn_response.h
index 8c547c5e..90eb9144 100644
--- a/lasso/Attic/protocols/authn_response.h
+++ b/lasso/Attic/protocols/authn_response.h
@@ -53,15 +53,15 @@ struct _LassoAuthnResponseClass {
LassoLibAuthnResponseClass parent;
};
-LASSO_EXPORT GType lasso_authn_response_get_type (void);
+LASSO_EXPORT GType lasso_authn_response_get_type (void);
-LASSO_EXPORT LassoNode* lasso_authn_response_new (char *providerID,
- LassoNode *request);
+LASSO_EXPORT LassoNode* lasso_authn_response_new (char *providerID,
+ LassoNode *request);
-LASSO_EXPORT LassoNode* lasso_authn_response_new_from_export (xmlChar *buffer,
- lassoNodeExportType type);
+LASSO_EXPORT LassoNode* lasso_authn_response_new_from_export (gchar *buffer,
+ lassoNodeExportType type);
-LASSO_EXPORT xmlChar* lasso_authn_response_get_status (LassoAuthnResponse *response);
+LASSO_EXPORT xmlChar* lasso_authn_response_get_status (LassoAuthnResponse *response);
#ifdef __cplusplus
}
diff --git a/lasso/Attic/protocols/authn_response_envelope.h b/lasso/Attic/protocols/authn_response_envelope.h
index 7445a0b6..7c7ab43f 100644
--- a/lasso/Attic/protocols/authn_response_envelope.h
+++ b/lasso/Attic/protocols/authn_response_envelope.h
@@ -58,13 +58,13 @@ LASSO_EXPORT GType lasso_authn_response_envelope_get_type
LASSO_EXPORT LassoNode* lasso_authn_response_envelope_new (LassoAuthnResponse *authnResponse,
xmlChar *assertionConsumerServiceURL);
+LASSO_EXPORT LassoNode* lasso_authn_response_envelope_new_from_export (gchar *buffer,
+ lassoNodeExportType export_type);
+
LASSO_EXPORT xmlChar* lasso_authn_response_envelope_get_assertionConsumerServiceURL (LassoAuthnResponseEnvelope *response);
LASSO_EXPORT LassoNode* lasso_authn_response_envelope_get_authnResponse (LassoAuthnResponseEnvelope *response);
-LASSO_EXPORT LassoNode* lasso_authn_response_envelope_new_from_export (gchar *buffer,
- lassoNodeExportType export_type);
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/lasso/Attic/protocols/federation.c b/lasso/Attic/protocols/federation.c
index 194fbb54..bcdb6cde 100644
--- a/lasso/Attic/protocols/federation.c
+++ b/lasso/Attic/protocols/federation.c
@@ -61,7 +61,7 @@ lasso_federation_destroy(LassoFederation *federation)
g_object_unref(G_OBJECT(federation));
}
-xmlChar *
+gchar *
lasso_federation_dump(LassoFederation *federation)
{
LassoNode *federation_node, *nameIdentifier;
@@ -276,7 +276,7 @@ lasso_federation_new(gchar *remote_providerID)
}
LassoFederation*
-lasso_federation_new_from_dump(xmlChar *dump)
+lasso_federation_new_from_dump(gchar *dump)
{
LassoFederation *federation;
diff --git a/lasso/Attic/protocols/federation.h b/lasso/Attic/protocols/federation.h
index 387863c8..ff0f5b74 100644
--- a/lasso/Attic/protocols/federation.h
+++ b/lasso/Attic/protocols/federation.h
@@ -69,13 +69,13 @@ LASSO_EXPORT GType lasso_federation_get_type (voi
LASSO_EXPORT LassoFederation* lasso_federation_new (gchar *remote_providerID);
-LASSO_EXPORT LassoFederation* lasso_federation_new_from_dump (xmlChar *dump);
+LASSO_EXPORT LassoFederation* lasso_federation_new_from_dump (gchar *dump);
LASSO_EXPORT LassoFederation* lasso_federation_copy (LassoFederation *federation);
LASSO_EXPORT void lasso_federation_destroy (LassoFederation *federation);
-LASSO_EXPORT xmlChar* lasso_federation_dump (LassoFederation *federation);
+LASSO_EXPORT gchar* lasso_federation_dump (LassoFederation *federation);
LASSO_EXPORT LassoNode* lasso_federation_get_remote_nameIdentifier (LassoFederation *federation);
diff --git a/lasso/Attic/protocols/federation_termination_notification.c b/lasso/Attic/protocols/federation_termination_notification.c
index fba882de..77168979 100644
--- a/lasso/Attic/protocols/federation_termination_notification.c
+++ b/lasso/Attic/protocols/federation_termination_notification.c
@@ -111,7 +111,7 @@ lasso_federation_termination_notification_new(const xmlChar *providerID,
}
LassoNode *
-lasso_federation_termination_notification_new_from_query(const xmlChar *query)
+lasso_federation_termination_notification_new_from_query(const gchar *query)
{
LassoNode *notification, *identifier;
xmlChar *str;
@@ -157,7 +157,7 @@ lasso_federation_termination_notification_new_from_query(const xmlChar *query)
}
LassoNode *
-lasso_federation_termination_notification_new_from_soap(const xmlChar *buffer)
+lasso_federation_termination_notification_new_from_soap(const gchar *buffer)
{
LassoNode *notification;
LassoNode *envelope, *lassoNode_notification;
@@ -183,7 +183,7 @@ lasso_federation_termination_notification_new_from_soap(const xmlChar *buffer)
LassoNode*
-lasso_federation_termination_notification_new_from_export(const xmlChar *buffer,
+lasso_federation_termination_notification_new_from_export(const gchar *buffer,
lassoNodeExportType export_type)
{
LassoNode *notification;
diff --git a/lasso/Attic/protocols/federation_termination_notification.h b/lasso/Attic/protocols/federation_termination_notification.h
index 1fdaf011..1882b4fa 100644
--- a/lasso/Attic/protocols/federation_termination_notification.h
+++ b/lasso/Attic/protocols/federation_termination_notification.h
@@ -59,7 +59,7 @@ LASSO_EXPORT LassoNode* lasso_federation_termination_notification_new
const xmlChar *nameQualifier,
const xmlChar *format);
-LASSO_EXPORT LassoNode* lasso_federation_termination_notification_new_from_export (const xmlChar *export,
+LASSO_EXPORT LassoNode* lasso_federation_termination_notification_new_from_export (const gchar *export,
lassoNodeExportType export_type);
#ifdef __cplusplus
diff --git a/lasso/Attic/protocols/name_identifier_mapping_request.c b/lasso/Attic/protocols/name_identifier_mapping_request.c
index 46a81632..7821afcb 100644
--- a/lasso/Attic/protocols/name_identifier_mapping_request.c
+++ b/lasso/Attic/protocols/name_identifier_mapping_request.c
@@ -118,7 +118,7 @@ lasso_name_identifier_mapping_request_new(const xmlChar *providerID,
}
LassoNode *
-lasso_name_identifier_mapping_request_new_from_query(const xmlChar *query)
+lasso_name_identifier_mapping_request_new_from_query(const gchar *query)
{
LassoNode *request, *identifier;
xmlChar *str;
@@ -171,7 +171,7 @@ lasso_name_identifier_mapping_request_new_from_query(const xmlChar *query)
}
LassoNode *
-lasso_name_identifier_mapping_request_new_from_soap(const xmlChar *buffer)
+lasso_name_identifier_mapping_request_new_from_soap(const gchar *buffer)
{
LassoNode *request;
LassoNode *envelope, *lassoNode_request;
diff --git a/lasso/Attic/protocols/name_identifier_mapping_request.h b/lasso/Attic/protocols/name_identifier_mapping_request.h
index bd40d5e1..86733447 100644
--- a/lasso/Attic/protocols/name_identifier_mapping_request.h
+++ b/lasso/Attic/protocols/name_identifier_mapping_request.h
@@ -59,8 +59,8 @@ LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_request_new
const xmlChar *format);
-LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_request_new_from_query (const xmlChar *query);
-LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_request_new_from_soap (const xmlChar *buffer);
+LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_request_new_from_query (const gchar *query);
+LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_request_new_from_soap (const gchar *buffer);
#ifdef __cplusplus
}
diff --git a/lasso/Attic/protocols/name_identifier_mapping_response.c b/lasso/Attic/protocols/name_identifier_mapping_response.c
index ed14fe4c..7a36115d 100644
--- a/lasso/Attic/protocols/name_identifier_mapping_response.c
+++ b/lasso/Attic/protocols/name_identifier_mapping_response.c
@@ -125,7 +125,7 @@ lasso_name_identifier_mapping_response_new(const xmlChar *providerID,
}
LassoNode *
-lasso_name_identifier_mapping_response_new_from_dump(const xmlChar *buffer)
+lasso_name_identifier_mapping_response_new_from_dump(const gchar *buffer)
{
LassoNode *response;
@@ -137,7 +137,7 @@ lasso_name_identifier_mapping_response_new_from_dump(const xmlChar *buffer)
/* build a NameIdentifierMappingResponse from a query form NameIdentifierMappingResponse */
LassoNode *
-lasso_name_identifier_mapping_response_new_from_query(const xmlChar *query)
+lasso_name_identifier_mapping_response_new_from_query(const gchar *query)
{
LassoNode *response;
GData *gd;
@@ -182,7 +182,7 @@ lasso_name_identifier_mapping_response_new_from_query(const xmlChar *query)
/* build a NameIdentifierMappingRespose from a soap form NameIdentifierMappingRequest */
LassoNode *
-lasso_name_identifier_mapping_response_new_from_request_soap(const xmlChar *buffer,
+lasso_name_identifier_mapping_response_new_from_request_soap(const gchar *buffer,
const xmlChar *providerID,
const xmlChar *statusCodeValue)
{
@@ -199,7 +199,7 @@ lasso_name_identifier_mapping_response_new_from_request_soap(const xmlChar *buff
}
LassoNode *
-lasso_name_identifier_mapping_response_new_from_soap(const xmlChar *buffer)
+lasso_name_identifier_mapping_response_new_from_soap(const gchar *buffer)
{
LassoNode *response;
LassoNode *envelope, *lassoNode_response;
@@ -225,7 +225,7 @@ lasso_name_identifier_mapping_response_new_from_soap(const xmlChar *buffer)
/* build a NameIdentifierMappingResponse from a query form NameIdentifierMappingRequest */
LassoNode *
-lasso_name_identifier_mapping_response_new_from_request_query(const xmlChar *query,
+lasso_name_identifier_mapping_response_new_from_request_query(const gchar *query,
const xmlChar *providerID,
const xmlChar *statusCodeValue)
{
diff --git a/lasso/Attic/protocols/name_identifier_mapping_response.h b/lasso/Attic/protocols/name_identifier_mapping_response.h
index 3cb3ee74..4d848509 100644
--- a/lasso/Attic/protocols/name_identifier_mapping_response.h
+++ b/lasso/Attic/protocols/name_identifier_mapping_response.h
@@ -54,17 +54,22 @@ struct _LassoNameIdentifierMappingResponseClass {
};
LASSO_EXPORT GType lasso_name_identifier_mapping_response_get_type (void);
+
LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new (const xmlChar *providerID,
const xmlChar *statusCodeValue,
LassoNode *request);
-LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_response_new_from_dump (const xmlChar *buffer);
-LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_response_new_from_query (const xmlChar *query);
-LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_response_new_from_request_soap (const xmlChar *buffer,
+LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_dump (const gchar *buffer);
+
+LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_query (const gchar *query);
+
+LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_request_soap (const gchar *buffer,
const xmlChar *providerID,
const xmlChar *statusCodeValue);
-LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_response_new_from_soap (const xmlChar *buffer);
-LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_response_new_from_request_query (const xmlChar *query,
+
+LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_soap (const gchar *buffer);
+
+LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_request_query (const gchar *query,
const xmlChar *providerID,
const xmlChar *statusCodeValue);
diff --git a/lasso/Attic/protocols/request.c b/lasso/Attic/protocols/request.c
index dd9b195c..1776045c 100644
--- a/lasso/Attic/protocols/request.c
+++ b/lasso/Attic/protocols/request.c
@@ -109,7 +109,7 @@ lasso_request_new_from_export(gchar *buffer,
lassoNodeExportType export_type)
{
LassoNode *request=NULL, *soap_node, *request_node;
- xmlChar *export;
+ gchar *export;
g_return_val_if_fail(buffer != NULL, NULL);
@@ -128,7 +128,7 @@ lasso_request_new_from_export(gchar *buffer,
lassoSamlProtocolHRef, NULL);
export = lasso_node_export(request_node);
lasso_node_import(request, export);
- xmlFree(export);
+ g_free(export);
lasso_node_destroy(request_node);
lasso_node_destroy(soap_node);
break;
diff --git a/lasso/Attic/protocols/response.c b/lasso/Attic/protocols/response.c
index e26cffb8..1491c60f 100644
--- a/lasso/Attic/protocols/response.c
+++ b/lasso/Attic/protocols/response.c
@@ -110,11 +110,11 @@ lasso_response_new()
}
LassoNode*
-lasso_response_new_from_export(xmlChar *buffer,
+lasso_response_new_from_export(gchar *buffer,
lassoNodeExportType export_type)
{
LassoNode *response = NULL, *soap_node, *response_node;
- xmlChar *export;
+ gchar *export;
g_return_val_if_fail(buffer != NULL, NULL);
@@ -133,7 +133,7 @@ lasso_response_new_from_export(xmlChar *buffer,
lassoSamlProtocolHRef, NULL);
export = lasso_node_export(response_node);
lasso_node_import(response, export);
- xmlFree(export);
+ g_free(export);
lasso_node_destroy(response_node);
lasso_node_destroy(soap_node);
break;
diff --git a/lasso/Attic/protocols/response.h b/lasso/Attic/protocols/response.h
index 0a5268cb..886e66f0 100644
--- a/lasso/Attic/protocols/response.h
+++ b/lasso/Attic/protocols/response.h
@@ -56,7 +56,7 @@ LASSO_EXPORT GType lasso_response_get_type (void);
LASSO_EXPORT LassoNode* lasso_response_new (void);
-LASSO_EXPORT LassoNode* lasso_response_new_from_export (xmlChar *buffer,
+LASSO_EXPORT LassoNode* lasso_response_new_from_export (gchar *buffer,
lassoNodeExportType export_type);
#ifdef __cplusplus
diff --git a/lasso/id-ff/identity.c b/lasso/id-ff/identity.c
index cc4b3845..e4340e7e 100644
--- a/lasso/id-ff/identity.c
+++ b/lasso/id-ff/identity.c
@@ -147,7 +147,7 @@ lasso_identity_dump(LassoIdentity *identity)
{
LassoNode *identity_node, *federations_node;
int table_size;
- xmlChar *dump;
+ gchar *dump;
g_return_val_if_fail(identity != NULL, NULL);
diff --git a/lasso/id-ff/session.c b/lasso/id-ff/session.c
index 43d619ef..dfc2bad6 100644
--- a/lasso/id-ff/session.c
+++ b/lasso/id-ff/session.c
@@ -157,7 +157,7 @@ lasso_session_dump(LassoSession *session)
LassoNode *session_node, *assertions_node;
LassoNodeClass *session_class, *assertions_class;
int table_size;
- xmlChar *dump;
+ gchar *dump;
g_return_val_if_fail(session != NULL, NULL);
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index 3bb2c54d..554f140b 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -77,7 +77,7 @@ lasso_node_copy(LassoNode *node)
*
* Return value: a full XML dump of @node
**/
-xmlChar *
+gchar *
lasso_node_dump(LassoNode *node,
const xmlChar *encoding,
int format)
@@ -111,7 +111,7 @@ lasso_node_destroy(LassoNode *node)
*
* Return value: an XML dump of the LassoNode (UTF-8 encoding)
**/
-xmlChar *
+gchar *
lasso_node_export(LassoNode *node)
{
g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
@@ -128,7 +128,7 @@ lasso_node_export(LassoNode *node)
*
* Return value: a Base64 encoded export of the LassoNode
**/
-xmlChar *
+gchar *
lasso_node_export_to_base64(LassoNode *node)
{
g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
@@ -167,7 +167,7 @@ lasso_node_export_to_query(LassoNode *node,
*
* Return value: a SOAP enveloped export of the LassoNode
**/
-xmlChar *
+gchar *
lasso_node_export_to_soap(LassoNode *node)
{
g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
@@ -191,7 +191,18 @@ lasso_node_get_attr(LassoNode *node,
const xmlChar *name,
GError **err)
{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+ if (err != NULL && *err != NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED,
+ lasso_strerror(LASSO_PARAM_ERROR_ERR_CHECK_FAILED));
+ g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+ }
+ if (LASSO_IS_NODE(node) == FALSE) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ,
+ lasso_strerror(LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ));
+ g_return_val_if_fail(LASSO_IS_NODE(node), NULL);
+ }
LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
return (class->get_attr(node, name, err));
@@ -213,7 +224,18 @@ lasso_node_get_attr_value(LassoNode *node,
const xmlChar *name,
GError **err)
{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+ if (err != NULL && *err != NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED,
+ lasso_strerror(LASSO_PARAM_ERROR_ERR_CHECK_FAILED));
+ g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+ }
+ if (LASSO_IS_NODE(node) == FALSE) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ,
+ lasso_strerror(LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ));
+ g_return_val_if_fail(LASSO_IS_NODE(node), NULL);
+ }
LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
return (class->get_attr_value(node, name, err));
@@ -253,7 +275,18 @@ lasso_node_get_child(LassoNode *node,
const xmlChar *href,
GError **err)
{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+ if (err != NULL && *err != NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED,
+ lasso_strerror(LASSO_PARAM_ERROR_ERR_CHECK_FAILED));
+ g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+ }
+ if (LASSO_IS_NODE(node) == FALSE) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ,
+ lasso_strerror(LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ));
+ g_return_val_if_fail(LASSO_IS_NODE(node), NULL);
+ }
LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
return (class->get_child(node, name, href, err));
@@ -277,7 +310,18 @@ lasso_node_get_child_content(LassoNode *node,
const xmlChar *href,
GError **err)
{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+ if (err != NULL && *err != NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED,
+ lasso_strerror(LASSO_PARAM_ERROR_ERR_CHECK_FAILED));
+ g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+ }
+ if (LASSO_IS_NODE(node) == FALSE) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ,
+ lasso_strerror(LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ));
+ g_return_val_if_fail(LASSO_IS_NODE(node), NULL);
+ }
LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
return (class->get_child_content(node, name, href, err));
@@ -317,7 +361,18 @@ xmlChar *
lasso_node_get_content(LassoNode *node,
GError **err)
{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+ if (err != NULL && *err != NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED,
+ lasso_strerror(LASSO_PARAM_ERROR_ERR_CHECK_FAILED));
+ g_return_val_if_fail (err == NULL || *err == NULL,NULL);
+ }
+ if (LASSO_IS_NODE(node) == FALSE) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ,
+ lasso_strerror(LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ));
+ g_return_val_if_fail(LASSO_IS_NODE(node), NULL);
+ }
LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
return (class->get_content(node, err));
@@ -348,8 +403,8 @@ lasso_node_get_name(LassoNode *node)
* Parses the XML buffer and loads it into the node.
**/
void
-lasso_node_import(LassoNode *node,
- const xmlChar *buffer)
+lasso_node_import(LassoNode *node,
+ const gchar *buffer)
{
g_return_if_fail(LASSO_IS_NODE(node));
@@ -408,7 +463,20 @@ lasso_node_verify_signature(LassoNode *node,
const gchar *certificate_file,
GError **err)
{
- g_return_val_if_fail (LASSO_IS_NODE(node), -1);
+ if (err != NULL && *err != NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED,
+ lasso_strerror(LASSO_PARAM_ERROR_ERR_CHECK_FAILED));
+ g_return_val_if_fail (err == NULL || *err == NULL,
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED);
+ }
+ if (LASSO_IS_NODE(node) == FALSE) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ,
+ lasso_strerror(LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ));
+ g_return_val_if_fail(LASSO_IS_NODE(node),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ);
+ }
LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
return (class->verify_signature(node, certificate_file, err));
@@ -436,7 +504,20 @@ lasso_node_add_signature(LassoNode *node,
const xmlChar *certificate_file,
GError **err)
{
- g_return_val_if_fail(LASSO_IS_NODE(node), -1);
+ if (err != NULL && *err != NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED,
+ lasso_strerror(LASSO_PARAM_ERROR_ERR_CHECK_FAILED));
+ g_return_val_if_fail (err == NULL || *err == NULL,
+ LASSO_PARAM_ERROR_ERR_CHECK_FAILED);
+ }
+ if (LASSO_IS_NODE(node) == FALSE) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ,
+ lasso_strerror(LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ));
+ g_return_val_if_fail(LASSO_IS_NODE(node),
+ LASSO_PARAM_ERROR_BADTYPE_OR_NULL_OBJ);
+ }
LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
return (class->add_signature(node, sign_method, private_key_file,
@@ -558,12 +639,12 @@ lasso_node_impl_destroy(LassoNode *node)
g_object_unref(G_OBJECT(node));
}
-static xmlChar *
+static gchar *
lasso_node_impl_dump(LassoNode *node,
const xmlChar *encoding,
int format)
{
- xmlChar *ret;
+ gchar *ret;
xmlOutputBufferPtr buf;
xmlCharEncodingHandlerPtr handler = NULL;
@@ -585,36 +666,37 @@ lasso_node_impl_dump(LassoNode *node,
0, format, encoding);
xmlOutputBufferFlush(buf);
if (buf->conv != NULL) {
- /* ret = g_strdup(buf->conv->content); */
- ret = buf->conv->content;
- buf->conv->content = NULL;
+ ret = g_strdup(buf->conv->content);
+ /* ret = buf->conv->content; */
+ /* buf->conv->content = NULL; */
}
else {
- /* ret = g_strdup(buf->buffer->content); */
- ret = buf->buffer->content;
- buf->buffer->content = NULL;
+ ret = g_strdup(buf->buffer->content);
+ /* ret = buf->buffer->content; */
+ /* buf->buffer->content = NULL; */
}
xmlOutputBufferClose(buf);
return (ret);
}
-static xmlChar *
+static gchar *
lasso_node_impl_export(LassoNode *node)
{
/* using lasso_node_impl_dump because dump method can be overrided */
return (lasso_node_impl_dump(node, "utf-8", 0));
}
-static xmlChar *
+static gchar *
lasso_node_impl_export_to_base64(LassoNode *node)
{
- xmlChar *buffer, *ret;
+ gchar *buffer, *ret;
buffer = lasso_node_impl_dump(node, "utf-8", 0);
ret = xmlSecBase64Encode((const xmlSecByte *) buffer,
(xmlSecSize)strlen((const char *)buffer), 0);
g_free(buffer);
+ buffer = NULL;
return (ret);
}
@@ -634,7 +716,8 @@ lasso_node_impl_export_to_query(LassoNode *node,
unsigned_query = lasso_node_build_query(node);
query = g_string_new(unsigned_query);
g_free(unsigned_query);
-
+ unsigned_query = NULL;
+
if (sign_method > 0 && private_key_file != NULL) {
/* add SigAlg in query */
query = g_string_append(query, "&SigAlg=");
@@ -648,6 +731,7 @@ lasso_node_impl_export_to_query(LassoNode *node,
}
query = g_string_append(query, str_escaped);
xmlFree(str_escaped);
+ str_escaped = NULL;
/* try to sign query */
doc = lasso_str_sign(query->str, sign_method, private_key_file);
@@ -656,6 +740,7 @@ lasso_node_impl_export_to_query(LassoNode *node,
str1 = lasso_doc_get_node_content(doc, xmlSecNodeSignatureValue);
str2 = lasso_str_escape(str1);
xmlFree(str1);
+ str1 = NULL;
xmlFreeDoc(doc);
}
else {
@@ -667,6 +752,7 @@ lasso_node_impl_export_to_query(LassoNode *node,
query = g_string_append(query, "&Signature=");
query = g_string_append(query, str2);
xmlFree(str2);
+ str2 = NULL;
}
ret = g_strdup(query->str);
@@ -682,11 +768,11 @@ lasso_node_impl_export_to_query(LassoNode *node,
*
* Return value:
**/
-static xmlChar *
+static gchar *
lasso_node_impl_export_to_soap(LassoNode *node)
{
LassoNode *envelope, *body, *copy_node;
- xmlChar *buffer;
+ gchar *buffer;
g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
@@ -719,9 +805,12 @@ lasso_node_impl_get_attr(LassoNode *node,
{
LassoAttr *prop;
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
- g_return_val_if_fail (name != NULL, NULL);
- g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+ if (name == NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_INVALID_VALUE,
+ lasso_strerror(LASSO_PARAM_ERROR_INVALID_VALUE));
+ g_return_val_if_fail(name != NULL, NULL);
+ }
prop = node->private->node->properties;
while (prop != NULL) {
@@ -744,9 +833,12 @@ lasso_node_impl_get_attr_value(LassoNode *node,
const xmlChar *name,
GError **err)
{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
- g_return_val_if_fail (name != NULL, NULL);
- g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+ if (name == NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_INVALID_VALUE,
+ lasso_strerror(LASSO_PARAM_ERROR_INVALID_VALUE));
+ g_return_val_if_fail(name != NULL, NULL);
+ }
xmlChar *value = xmlGetProp(node->private->node, name);
@@ -786,9 +878,12 @@ lasso_node_impl_get_child(LassoNode *node,
const xmlChar *href,
GError **err)
{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
- g_return_val_if_fail (name != NULL, NULL);
- g_return_val_if_fail (err == NULL || *err == NULL, NULL);
+ if (name == NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_INVALID_VALUE,
+ lasso_strerror(LASSO_PARAM_ERROR_INVALID_VALUE));
+ g_return_val_if_fail(name != NULL, NULL);
+ }
/* /\* No recurssive version *\/ */
/* xmlNodePtr cur; */
@@ -862,14 +957,19 @@ lasso_node_impl_get_child_content(LassoNode *node,
const xmlChar *href,
GError **err)
{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
- g_return_val_if_fail (name != NULL, NULL);
- g_return_val_if_fail (err == NULL || *err == NULL, NULL);
-
GError *tmp_err = NULL;
- LassoNode *child = lasso_node_get_child(node, name, href, &tmp_err);
+ LassoNode *child;
xmlChar *content = NULL;
+ if (name == NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_INVALID_VALUE,
+ lasso_strerror(LASSO_PARAM_ERROR_INVALID_VALUE));
+ g_return_val_if_fail(name != NULL, NULL);
+ }
+
+ child = lasso_node_get_child(node, name, href, &tmp_err);
+
if (child != NULL) {
content = lasso_node_get_content(child, &tmp_err);
lasso_node_destroy(child);
@@ -910,9 +1010,6 @@ lasso_node_impl_get_content(LassoNode *node,
{
xmlChar *content;
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
- g_return_val_if_fail (err == NULL || *err == NULL, NULL);
-
content = xmlNodeGetContent(node->private->node);
if (content == NULL) {
g_set_error(err, g_quark_from_string("Lasso"),
@@ -933,8 +1030,8 @@ lasso_node_impl_get_name(LassoNode *node)
}
static void
-lasso_node_impl_import(LassoNode *node,
- const xmlChar *buffer)
+lasso_node_impl_import(LassoNode *node,
+ const gchar *buffer)
{
xmlDocPtr doc;
xmlNodePtr root;
@@ -983,15 +1080,21 @@ lasso_node_impl_verify_signature(LassoNode *node,
const gchar *certificate_file,
GError **err)
{
- xmlDocPtr doc = xmlNewDoc("1.0");
+ xmlDocPtr doc = NULL;
xmlNodePtr xmlNode_copy = NULL;
xmlNodePtr signature = NULL;
xmlSecKeysMngrPtr mngr = NULL;
xmlSecDSigCtxPtr dsigCtx = NULL;
gint ret = 0;
- g_return_val_if_fail (LASSO_IS_NODE(node), LASSO_PARAM_ERROR_INVALID_OBJ_TYPE);
- g_return_val_if_fail (certificate_file != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
+ if (certificate_file == NULL) {
+ g_set_error(err, g_quark_from_string("Lasso"),
+ LASSO_PARAM_ERROR_INVALID_VALUE,
+ lasso_strerror(LASSO_PARAM_ERROR_INVALID_VALUE));
+ g_return_val_if_fail(certificate_file != NULL, NULL);
+ }
+
+ doc = xmlNewDoc("1.0");
/* create a copy of the xmlNode (node->private->node) of @node */
xmlNode_copy = xmlCopyNode(lasso_node_get_xmlNode(node), 1);
@@ -1127,7 +1230,8 @@ lasso_node_impl_add_signature(LassoNode *node,
gint ret = 0;
GError *tmp_err = NULL;
- g_return_val_if_fail (err == NULL || *err == NULL, LASSO_ERR_ERROR_CHECK_FAILED);
+ /* don't chech private_key_file and certificate_file here
+ done in lasso_ds_signature_sign() */
switch (sign_method) {
case lassoSignatureMethodRsaSha1:
@@ -1198,6 +1302,7 @@ lasso_node_impl_build_query(LassoNode *node)
str_escaped = lasso_str_escape(g_ptr_array_index(aa, 1));
query = g_string_append(query, str_escaped);
xmlFree(str_escaped);
+ str_escaped = NULL;
if (i<a->len - 1) {
query = g_string_append(query, "&");
}
@@ -1264,6 +1369,7 @@ gdata_serialize_destroy_notify(gpointer data)
for (i=0; i<array->len; i++) {
xmlFree(array->pdata[i]);
+ array->pdata[i] = NULL;
}
g_ptr_array_free(array, TRUE);
}
@@ -1327,6 +1433,7 @@ lasso_node_impl_serialize(LassoNode *node,
g_ptr_array_add(values, val);
}
xmlFree(name);
+ name = NULL;
break;
}
lasso_node_destroy((LassoNode *)g_ptr_array_index(children, i));
@@ -1539,7 +1646,7 @@ lasso_node_new()
* Return value: a new node
**/
LassoNode*
-lasso_node_new_from_dump(const xmlChar *buffer)
+lasso_node_new_from_dump(const gchar *buffer)
{
LassoNode *node;
xmlDocPtr doc;
diff --git a/lasso/xml/xml.h b/lasso/xml/xml.h
index 0e3a9d52..87abf759 100644
--- a/lasso/xml/xml.h
+++ b/lasso/xml/xml.h
@@ -70,15 +70,15 @@ struct _LassoNodeClass {
/*< public >*/
LassoNode* (* copy) (LassoNode *node);
void (* destroy) (LassoNode *node);
- xmlChar* (* dump) (LassoNode *node,
+ gchar* (* dump) (LassoNode *node,
const xmlChar *encoding,
int format);
- xmlChar* (* export) (LassoNode *node);
- xmlChar* (* export_to_base64) (LassoNode *node);
- gchar* (* export_to_query) (LassoNode *node,
+ gchar* (* export) (LassoNode *node);
+ gchar* (* export_to_base64) (LassoNode *node);
+ gchar* (* export_to_query) (LassoNode *node,
lassoSignatureMethod sign_method,
const gchar *private_key_file);
- xmlChar* (* export_to_soap) (LassoNode *node);
+ gchar* (* export_to_soap) (LassoNode *node);
LassoAttr* (* get_attr) (LassoNode *node,
const xmlChar *name,
GError **err);
@@ -99,7 +99,7 @@ struct _LassoNodeClass {
GError **err);
xmlChar* (* get_name) (LassoNode *node);
void (* import) (LassoNode *node,
- const xmlChar *buffer);
+ const gchar *buffer);
void (* import_from_node) (LassoNode *node,
LassoNode *imported_node);
void (* rename_prop) (LassoNode *node,
@@ -139,68 +139,68 @@ struct _LassoNodeClass {
LASSO_EXPORT GType lasso_node_get_type (void);
-LASSO_EXPORT LassoNode* lasso_node_new (void);
-LASSO_EXPORT LassoNode* lasso_node_new_from_dump (const xmlChar *buffer);
-LASSO_EXPORT LassoNode* lasso_node_new_from_xmlNode (xmlNodePtr node);
+LASSO_EXPORT LassoNode* lasso_node_new (void);
+LASSO_EXPORT LassoNode* lasso_node_new_from_dump (const gchar *buffer);
+LASSO_EXPORT LassoNode* lasso_node_new_from_xmlNode (xmlNodePtr node);
-LASSO_EXPORT LassoNode* lasso_node_copy (LassoNode *node);
+LASSO_EXPORT LassoNode* lasso_node_copy (LassoNode *node);
-LASSO_EXPORT void lasso_node_destroy (LassoNode *node);
+LASSO_EXPORT void lasso_node_destroy (LassoNode *node);
-LASSO_EXPORT xmlChar* lasso_node_dump (LassoNode *node,
- const xmlChar *encoding,
- int format);
+LASSO_EXPORT gchar* lasso_node_dump (LassoNode *node,
+ const xmlChar *encoding,
+ int format);
-LASSO_EXPORT xmlChar* lasso_node_export (LassoNode *node);
+LASSO_EXPORT gchar* lasso_node_export (LassoNode *node);
-LASSO_EXPORT xmlChar* lasso_node_export_to_base64 (LassoNode *node);
+LASSO_EXPORT gchar* lasso_node_export_to_base64 (LassoNode *node);
-LASSO_EXPORT gchar* lasso_node_export_to_query (LassoNode *node,
- lassoSignatureMethod sign_method,
- const gchar *private_key_file);
+LASSO_EXPORT gchar* lasso_node_export_to_query (LassoNode *node,
+ lassoSignatureMethod sign_method,
+ const gchar *private_key_file);
-LASSO_EXPORT xmlChar* lasso_node_export_to_soap (LassoNode *node);
+LASSO_EXPORT gchar* lasso_node_export_to_soap (LassoNode *node);
-LASSO_EXPORT LassoAttr* lasso_node_get_attr (LassoNode *node,
- const xmlChar *name,
- GError **err);
+LASSO_EXPORT LassoAttr* lasso_node_get_attr (LassoNode *node,
+ const xmlChar *name,
+ GError **err);
-LASSO_EXPORT xmlChar* lasso_node_get_attr_value (LassoNode *node,
- const xmlChar *name,
- GError **err);
+LASSO_EXPORT xmlChar* lasso_node_get_attr_value (LassoNode *node,
+ const xmlChar *name,
+ GError **err);
-LASSO_EXPORT GPtrArray* lasso_node_get_attrs (LassoNode *node);
+LASSO_EXPORT GPtrArray* lasso_node_get_attrs (LassoNode *node);
-LASSO_EXPORT LassoNode* lasso_node_get_child (LassoNode *node,
- const xmlChar *name,
- const xmlChar *href,
- GError **err);
+LASSO_EXPORT LassoNode* lasso_node_get_child (LassoNode *node,
+ const xmlChar *name,
+ const xmlChar *href,
+ GError **err);
-LASSO_EXPORT xmlChar * lasso_node_get_child_content(LassoNode *node,
- const xmlChar *name,
- const xmlChar *href,
- GError **err);
+LASSO_EXPORT xmlChar * lasso_node_get_child_content(LassoNode *node,
+ const xmlChar *name,
+ const xmlChar *href,
+ GError **err);
-LASSO_EXPORT GPtrArray* lasso_node_get_children (LassoNode *node);
+LASSO_EXPORT GPtrArray* lasso_node_get_children (LassoNode *node);
-LASSO_EXPORT xmlChar* lasso_node_get_content (LassoNode *node,
- GError **err);
+LASSO_EXPORT xmlChar* lasso_node_get_content (LassoNode *node,
+ GError **err);
-LASSO_EXPORT xmlChar* lasso_node_get_name (LassoNode *node);
+LASSO_EXPORT xmlChar* lasso_node_get_name (LassoNode *node);
-LASSO_EXPORT void lasso_node_import (LassoNode *node,
- const xmlChar *buffer);
+LASSO_EXPORT void lasso_node_import (LassoNode *node,
+ const gchar *buffer);
-LASSO_EXPORT void lasso_node_import_from_node (LassoNode *node,
- LassoNode *imported_node);
+LASSO_EXPORT void lasso_node_import_from_node (LassoNode *node,
+ LassoNode *imported_node);
-LASSO_EXPORT void lasso_node_rename_prop (LassoNode *node,
- const xmlChar *old_name,
- const xmlChar *new_name);
+LASSO_EXPORT void lasso_node_rename_prop (LassoNode *node,
+ const xmlChar *old_name,
+ const xmlChar *new_name);
-LASSO_EXPORT gint lasso_node_verify_signature (LassoNode *node,
- const gchar *certificate_file,
- GError **err);
+LASSO_EXPORT gint lasso_node_verify_signature (LassoNode *node,
+ const gchar *certificate_file,
+ GError **err);
#ifdef __cplusplus
}