diff options
author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-04 00:02:03 +0000 |
---|---|---|
committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-04 00:02:03 +0000 |
commit | c9068fee45bf360f227cb0f18070821d6abfea11 (patch) | |
tree | ba663344976aec762d29a1da65eb1fa809bda55c | |
parent | 5b8b096341c6f47e886a0f4e682c052cbaad7245 (diff) | |
download | lasso-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.c | 20 |
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; |