diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-04 00:02:00 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-04 00:02:00 +0000 |
| commit | 5b8b096341c6f47e886a0f4e682c052cbaad7245 (patch) | |
| tree | c3f2246fb4d2c3eb0facfcc4549b7d333a38fa0a | |
| parent | dce72553df87382a44c79953cb255a35976e3d0c (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.c | 9 | ||||
| -rw-r--r-- | lasso/xml/xml.c | 3 |
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); |
