summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-01-25 23:47:43 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-01-25 23:47:43 +0000
commitbec8672cc57d9afa3da88aa7bf0e251d3b274b5c (patch)
tree6abc26440b0c5ca02d9bc824ea13e3ae36ab554f
parente4e20f8d02c36336c5a705c500a88175e4aad33e (diff)
downloadlasso-bec8672cc57d9afa3da88aa7bf0e251d3b274b5c.tar.gz
lasso-bec8672cc57d9afa3da88aa7bf0e251d3b274b5c.tar.xz
lasso-bec8672cc57d9afa3da88aa7bf0e251d3b274b5c.zip
Add new macro lasso_list_add_new_xml_node
* lasso/utils.h: fix lasso_list_add_xml_node, it must copy the node before assigning it. add lasso_list_add_new_xml_node for keeping the old behaviour. * lasso/xml/xml.c: fix use of lasso_list_add_xml_node, because copying the node before assigning it is a leak now.
-rw-r--r--lasso/utils.h6
-rw-r--r--lasso/xml/xml.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/lasso/utils.h b/lasso/utils.h
index 0595f592..94ff4884 100644
--- a/lasso/utils.h
+++ b/lasso/utils.h
@@ -299,6 +299,12 @@
#define lasso_list_add_xml_node(dest, src) \
{ \
+ xmlNode *__tmp_src = xmlCopyNode(src, 1); \
+ lasso_list_add_non_null(dest, __tmp_src); \
+ }
+
+#define lasso_list_add_new_xml_node(dest, src) \
+ { \
xmlNode *__tmp_src = src; \
lasso_list_add_non_null(dest, __tmp_src); \
}
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index 9d57b29c..859481cf 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -629,8 +629,8 @@ lasso_node_encrypt(LassoNode *lasso_node, xmlSecKey *encryption_public_key,
/* Create a new EncryptedElement */
encrypted_element = LASSO_SAML2_ENCRYPTED_ELEMENT(lasso_saml2_encrypted_element_new());
lasso_assign_gobject(encrypted_element->original_data, lasso_node);
- lasso_list_add_xml_node(encrypted_element->EncryptedKey, xmlCopyNode(encrypted_key_node, 1));
- lasso_assign_xml_node(encrypted_element->EncryptedData, xmlCopyNode(xmlDocGetRootElement(doc), 1));
+ lasso_list_add_xml_node(encrypted_element->EncryptedKey, encrypted_key_node);
+ lasso_assign_xml_node(encrypted_element->EncryptedData, xmlDocGetRootElement(doc));
lasso_transfer_gobject(ret, encrypted_element);
cleanup: