aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2014-04-15 14:40:48 +0000
committerWerner Koch <[email protected]>2014-07-30 09:13:22 +0000
commiteee89ffd0193fd18114b5c3cb7d8544aa71b512a (patch)
tree475878bf74762d804e666790a377b471923de309
parentw32: Fix memleak in an error code paths. (diff)
downloadgpgme-eee89ffd0193fd18114b5c3cb7d8544aa71b512a.tar.gz
gpgme-eee89ffd0193fd18114b5c3cb7d8544aa71b512a.zip
w32: Fix another memleak on error.
* src/w32-io.c (create_reader): free CTX. -- Found by Hans-Christoph Steiner with cppcheck.
-rw-r--r--src/engine-gpg.c4
-rw-r--r--src/w32-io.c1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 3bc9f660..36f035ac 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -896,6 +896,10 @@ build_argv (engine_gpg_t gpg)
close_notify_handler,
gpg))
{
+ /* We leak fd_data_map and the fds. This is not easy
+ to avoid and given that we reach this here only
+ after a malloc failure for a small object, it is
+ probably better not to do anything. */
return gpg_error (GPG_ERR_GENERAL);
}
/* If the data_type is FD, we have to do a dup2 here. */
diff --git a/src/w32-io.c b/src/w32-io.c
index 133d29e1..f9e4313b 100644
--- a/src/w32-io.c
+++ b/src/w32-io.c
@@ -425,6 +425,7 @@ create_reader (int fd)
if (fd < 0 || fd >= MAX_SLAFD || !fd_table[fd].used)
{
TRACE_SYSERR (EIO);
+ free (ctx);
return NULL;
}
TRACE_LOG4 ("fd=%d -> handle=%p socket=%d dupfrom=%d",