From 117566344943d20969c54ddef12e344bc27aad27 Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Sat, 29 Jun 2013 19:44:52 -0400 Subject: [PATCH] Fix some memory leaks. I didn't catch this and neither did Valgrind. It seems that './configure --enable-mem-debug' should be used to catch more leaks. --- src/agent.c | 1 + src/commands.c | 3 +++ src/crypto.c | 4 ++++ src/pinentry.c | 2 +- 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/agent.c b/src/agent.c index 6ff520d2..db3ab6f5 100644 --- a/src/agent.c +++ b/src/agent.c @@ -599,6 +599,7 @@ agent_loopback_cb (void *user, const char *keyword) return gpg_error (GPG_ERR_ENOMEM); len = strlen (tmp); + xfree (result); result = xmalloc (len); memcpy (result, tmp, len); xfree (tmp); diff --git a/src/commands.c b/src/commands.c index d6ad7a91..f7ed066a 100644 --- a/src/commands.c +++ b/src/commands.c @@ -341,6 +341,9 @@ open_finalize (assuan_context_t ctx, char *key, size_t keylen) } } + gcry_free (salted_key); + salted_key = NULL; + if (client->pinentry_opts.title != pin_title) xfree (client->pinentry_opts.title); diff --git a/src/crypto.c b/src/crypto.c index 91d833c2..e9b0b345 100644 --- a/src/crypto.c +++ b/src/crypto.c @@ -1301,6 +1301,9 @@ change_passwd (assuan_context_t ctx, const char *filename, int inquire, return rc; } + gcry_free (key); + key = NULL; + if (!rc) { memcpy (&crypto->save.hdr, &crypto->hdr, sizeof (file_header_t)); @@ -1364,6 +1367,7 @@ save_common (const char *filename, struct crypto_s *crypto, { gcry_free (cdata->doc); cdata->doc = NULL; + gcry_free (cdata->key); cdata->key = (unsigned char *)key; cdata->keylen = keylen; rc = encrypt_xml (NULL, cache_key, cache_keysize, GCRY_CIPHER_AES, data, diff --git a/src/pinentry.c b/src/pinentry.c index a98fcfbe..d81e9ee2 100644 --- a/src/pinentry.c +++ b/src/pinentry.c @@ -406,7 +406,7 @@ pinentry_getpin (struct pinentry_s * pin, char **result, pinentry_cmd_t which) if (rc) goto done; - result1 = str_dup (*result); + result1 = *result; goto again; } -- 2.11.4.GIT