diff options
author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-08-11 21:14:45 +0000 |
---|---|---|
committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-08-11 21:14:45 +0000 |
commit | e356eaec446a6af0713d5db6352c1df5482d3d52 (patch) | |
tree | d8e00d4802f3f6d094ff170657444ad34b5de323 /lasso | |
parent | dbbe0e32dc1eb43bcdf590389b94915c8af37839 (diff) | |
download | lasso-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')
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 } |