summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-02-04 00:02:03 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-02-04 00:02:03 +0000
commitc9068fee45bf360f227cb0f18070821d6abfea11 (patch)
treeba663344976aec762d29a1da65eb1fa809bda55c
parent5b8b096341c6f47e886a0f4e682c052cbaad7245 (diff)
downloadlasso-c9068fee45bf360f227cb0f18070821d6abfea11.tar.gz
lasso-c9068fee45bf360f227cb0f18070821d6abfea11.tar.xz
lasso-c9068fee45bf360f227cb0f18070821d6abfea11.zip
in lasso/xml/tools.c, remove leaks of xmlSecKey and xmlNode
-rw-r--r--lasso/xml/tools.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/lasso/xml/tools.c b/lasso/xml/tools.c
index dd105cb0..66b5ec69 100644
--- a/lasso/xml/tools.c
+++ b/lasso/xml/tools.c
@@ -529,6 +529,7 @@ LassoNode*
lasso_assertion_encrypt(LassoSaml2Assertion *assertion, char *recipient)
{
xmlSecKey *encryption_public_key = NULL;
+ LassoNode *ret = NULL;
if (assertion->encryption_activated == FALSE ||
assertion->encryption_public_key_str == NULL) {
@@ -536,10 +537,12 @@ lasso_assertion_encrypt(LassoSaml2Assertion *assertion, char *recipient)
}
encryption_public_key = lasso_xmlsec_load_private_key(assertion->encryption_public_key_str, NULL);
- return LASSO_NODE(lasso_node_encrypt(LASSO_NODE(assertion),
+ ret = LASSO_NODE(lasso_node_encrypt(LASSO_NODE(assertion),
encryption_public_key, assertion->encryption_sym_key_type, recipient));
-}
+ lasso_release_sec_key(encryption_public_key);
+ return ret;
+}
/**
* lasso_query_verify_signature:
@@ -1455,18 +1458,17 @@ lasso_node_decrypt_xmlnode(xmlNode* encrypted_element,
}
cleanup:
- if (doc == NULL) {
- if (encrypted_data_node) {
- xmlFreeNode(encrypted_data_node);
- }
- if (encrypted_key_node) {
- xmlFreeNode(encrypted_key_node);
- }
+ if (doc == NULL && encrypted_data_node) {
+ xmlFreeNode(encrypted_data_node);
+ }
+ if (doc2 == NULL && encrypted_key_node) {
+ xmlFreeNode(encrypted_key_node);
}
if (encCtx) {
xmlSecEncCtxDestroy(encCtx);
}
lasso_release_doc(doc);
+ lasso_release_doc(doc2);
lasso_release_gobject(decrypted_node);
return rc;