summaryrefslogtreecommitdiffstats
path: root/lasso/xml
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-10-01 10:31:58 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-10-01 10:31:58 +0000
commitef42f2cbc8eb16df1a8e45650c652d227fd35ef4 (patch)
tree35b69e41a882c19f11b61ecfe2f7d0d4ff718faf /lasso/xml
parent7290225b00d65a7ea111ddf3216bf7d9f39a81b6 (diff)
downloadlasso-ef42f2cbc8eb16df1a8e45650c652d227fd35ef4.tar.gz
lasso-ef42f2cbc8eb16df1a8e45650c652d227fd35ef4.tar.xz
lasso-ef42f2cbc8eb16df1a8e45650c652d227fd35ef4.zip
add functionality to enable debugging flags at runtime
This code permit to set flags, separated by commas, space, tabulations, or colons. This flags activates debug functions like, suppressing validations of signatures or print debugging message about deallocations. The new flags are defined in /lasso/debug.h they can be set using an environment variable named LASSO_FLAG or a function named lasso_set_flag. There are two flags currently: - verify-signature: To deactivate it, pass 'no-verify-signature' inside LASSO_DEBUG. It desactivate signature verification, inside two functions: lasso_query_verify_signature and lasso_provider_verify_signature. - memory-debug: It enabled reporting of memory deallocation inside generic memory dellaocator for LassoNode objects and also in bindings. - lasso/xml/xml.c: do not free a null hash table pointer.
Diffstat (limited to 'lasso/xml')
-rw-r--r--lasso/xml/tools.c6
-rw-r--r--lasso/xml/xml.c19
2 files changed, 17 insertions, 8 deletions
diff --git a/lasso/xml/tools.c b/lasso/xml/tools.c
index 6f19a38a..a61b7783 100644
--- a/lasso/xml/tools.c
+++ b/lasso/xml/tools.c
@@ -45,6 +45,7 @@
#include <lasso/xml/xml.h>
#include <lasso/xml/xml_enc.h>
#include <lasso/xml/saml-2.0/saml2_assertion.h>
+#include "../debug.h"
LassoNode* lasso_assertion_encrypt(LassoSaml2Assertion *assertion);
static xmlSecKeyPtr lasso_get_public_key_from_private_key_file(const char *private_key_file);
@@ -536,6 +537,11 @@ lasso_query_verify_signature(const char *query, const xmlSecKey *sender_public_k
char *sig_alg, *usig_alg = NULL;
g_return_val_if_fail(query != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
+
+ if (lasso_flag_verify_signature == FALSE) {
+ return 0;
+ }
+
g_return_val_if_fail(sender_public_key != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
g_return_val_if_fail(sender_public_key->value != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index 06c8bccd..a33d04d4 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -50,6 +50,7 @@
#include <lasso/xml/saml_name_identifier.h>
#include "../utils.h"
#include "../registry.h"
+#include "../debug.h"
static char* lasso_node_build_query(LassoNode *node);
@@ -1278,9 +1279,9 @@ lasso_node_dispose(GObject *object)
SnippetType type;
GList *elem;
-#ifdef LASSO_DEBUG
- fprintf(stderr, "dispose of %s (at %p)\n", G_OBJECT_TYPE_NAME(object), object);
-#endif
+ if (lasso_flag_memory_debug == TRUE) {
+ fprintf(stderr, "dispose of %s (at %p)\n", G_OBJECT_TYPE_NAME(object), object);
+ }
class = LASSO_NODE_GET_CLASS(object);
while (class && LASSO_IS_NODE_CLASS(class) && class->node_data) {
@@ -1296,10 +1297,10 @@ lasso_node_dispose(GObject *object)
if (*value == NULL)
continue;
-#ifdef LASSO_DEBUG
- fprintf(stderr, " freeing %s/%s (at %p)\n",
- G_OBJECT_TYPE_NAME(object), snippet->name, *value);
-#endif
+ if (lasso_flag_memory_debug == TRUE) {
+ fprintf(stderr, " freeing %s/%s (at %p)\n",
+ G_OBJECT_TYPE_NAME(object), snippet->name, *value);
+ }
switch (type) {
case SNIPPET_NODE:
case SNIPPET_NAME_IDENTIFIER:
@@ -1331,7 +1332,9 @@ lasso_node_dispose(GObject *object)
case SNIPPET_TEXT_CHILD:
case SNIPPET_ATTRIBUTE: {
if (snippet->type & SNIPPET_ANY) {
- g_hash_table_destroy(*value);
+ if (*value) {
+ g_hash_table_destroy(*value);
+ }
} else {
g_free(*value);
}