From eee89ffd0193fd18114b5c3cb7d8544aa71b512a Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 15 Apr 2014 16:40:48 +0200 Subject: [PATCH] w32: Fix another memleak on error. * src/w32-io.c (create_reader): free CTX. -- Found by Hans-Christoph Steiner with cppcheck. --- src/engine-gpg.c | 4 ++++ src/w32-io.c | 1 + 2 files changed, 5 insertions(+) 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",