Author: Christian Hesse <mail@eworm.de>
cache: fix resource leak: close file handle before return Coverity-id: 13910 Signed-off-by: Christian Hesse <mail@eworm.de>
cache.c | 12 +++++++++---
diff --git a/cache.c b/cache.c index 57c891864ffb8b70447c6db5fd8366f662aadd39..b169d20f779aaa21ed5c3bd8e4e21c62500a0c90 100644 --- a/cache.c +++ b/cache.c @@ -215,19 +215,25 @@ if (tmp == -1) return errno; /* Redirect stdout to lockfile */ - if (dup2(slot->lock_fd, STDOUT_FILENO) == -1) + if (dup2(slot->lock_fd, STDOUT_FILENO) == -1) { + close(tmp); return errno; + } /* Generate cache content */ slot->fn(); /* update stat info */ - if (fstat(slot->lock_fd, &slot->cache_st)) + if (fstat(slot->lock_fd, &slot->cache_st)) { + close(tmp); return errno; + } /* Restore stdout */ - if (dup2(tmp, STDOUT_FILENO) == -1) + if (dup2(tmp, STDOUT_FILENO) == -1) { + close(tmp); return errno; + } /* Close the temporary filedescriptor */ if (close(tmp))