summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-02-04 00:02:00 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-02-04 00:02:00 +0000
commit5b8b096341c6f47e886a0f4e682c052cbaad7245 (patch)
treec3f2246fb4d2c3eb0facfcc4549b7d333a38fa0a
parentdce72553df87382a44c79953cb255a35976e3d0c (diff)
in lasso_xmlsec_load_private_key, do not leak the file buffer, in lasso_node_encrypt do not leak the keys manager
-rw-r--r--lasso/xml/tools.c9
-rw-r--r--lasso/xml/xml.c3
2 files changed, 7 insertions, 5 deletions
diff --git a/lasso/xml/tools.c b/lasso/xml/tools.c
index f862c9f6..dd105cb0 100644
--- a/lasso/xml/tools.c
+++ b/lasso/xml/tools.c
@@ -1697,16 +1697,19 @@ lasso_xmlsec_load_private_key_from_buffer(const char *buffer, size_t length, con
xmlSecKey*
lasso_xmlsec_load_private_key(const char *filename_or_buffer, const char *password) {
- char *buffer;
+ char *buffer = NULL;
size_t length;
+ xmlSecKey *ret;
if (! filename_or_buffer)
return NULL;
if (g_file_get_contents(filename_or_buffer, &buffer, &length, NULL)) {
- return lasso_xmlsec_load_private_key_from_buffer(buffer, length, password);
+ ret = lasso_xmlsec_load_private_key_from_buffer(buffer, length, password);
} else {
- return lasso_xmlsec_load_private_key_from_buffer(filename_or_buffer, strlen(filename_or_buffer), password);
+ ret = lasso_xmlsec_load_private_key_from_buffer(filename_or_buffer, strlen(filename_or_buffer), password);
}
+ lasso_release_string(buffer);
+ return ret;
}
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index b78ed701..236560db 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -551,7 +551,6 @@ lasso_node_encrypt(LassoNode *lasso_node, xmlSecKey *encryption_public_key,
if (xmlSecCryptoAppDefaultKeysMngrInit(key_manager) < 0) {
message(G_LOG_LEVEL_WARNING, "Failed to initialize keys manager");
- xmlSecKeysMngrDestroy(key_manager);
goto cleanup;
}
@@ -559,7 +558,6 @@ lasso_node_encrypt(LassoNode *lasso_node, xmlSecKey *encryption_public_key,
* for destroying key
*/
if (xmlSecCryptoAppDefaultKeysMngrAdoptKey(key_manager, encryption_public_key) < 0) {
- xmlSecKeysMngrDestroy(key_manager);
goto cleanup;
}
@@ -636,6 +634,7 @@ lasso_node_encrypt(LassoNode *lasso_node, xmlSecKey *encryption_public_key,
lasso_transfer_gobject(ret, encrypted_element);
cleanup:
+ lasso_release_key_manager(key_manager);
lasso_release_gobject(encrypted_element);
lasso_release_encrypt_context(enc_ctx);
lasso_release_doc(doc);